SQL INSERT производительность, исключающая имена полей?

Кто-нибудь знает, приведет ли удаление имен полей из запроса INSERT к некоторым улучшениям производительности?

Я имею в виду следующее:

INSERT INTO table1 VALUES (value1, value2, ...)

быстрее для выполнения БД, а не для этого:

INSERT INTO table1 (field1, field2, ...) VALUES (value1, value2, ...)

?

Я знаю, что это может быть бессмысленная разница в производительности, но просто чтобы знать.

Я обычно использую MySQL и PostgreSQL как DB.

Ответ 1

Нет, наоборот! По крайней мере для Microsoft SQL Server - вы не указали, в какой базе данных вы говорите.....

Если вы не укажете поля в SELECT или INSERT, тогда процессор запросов SQL Server должен сначала проверить системные каталоги, чтобы узнать, какие поля действительно доступны.

Поэтому я всегда рекомендую явно указывать нужные поля - на SELECT как на INSERT.

Ответ 2

Нет, это не быстрее. База данных должна проверять, какие поля находятся в таблице, и в любом случае соответствовать значениям.

Вы должны всегда указывать поля в запросе, чтобы сделать код более надежным. Если кто-то изменяет порядок полей в таблице, он перестает работать (или, хуже, записывает данные в неправильном поле), если вы не указали поля.

Ответ 3

Я не знаю какого-либо улучшения производительности, опуская имена полей, но я бы посоветовал ему ничего, кроме тестирования/только-только вставки.

Считывание будет страдать (вы должны проверить таблицу, чтобы увидеть, что там вставлено), и ваш код будет разбит, если изменится схема таблицы.