Предложение VALUES или создание таблиц из ничего
Автор: Joe Celko, The VALUES clause or building tables out of nothing
Предложение VALUES, вероятно, одна из самых неправильно используемых возможностей в SQL. Если вы посмотрите на онлайн-форумы по SQL, вы увидите, что люди используют его как второе предложение в операторе вставки, но используют его для построения только одной строки за раз, например так:
BEGIN
INSERT INTO Zodiac (astro_sign, astro_start_date, astro_end_date)
VALUES ('Aries', '2025-03-21', '2025-04-19');
INSERT INTO Zodiac (astro_sign, astro_start_date, astro_end_date)
VALUES ('Taurus', '2025-04-20', '2025-05-20');
…
INSERT INTO Zodiac (astro_sign, astro_start_date, astro_end_date)
VALUES ('Pisces', '2023-05-19', '2026-03-20');
END;Каждый оператор вставки заканчивается точкой с запятой, поэтому они будут выполняться отдельно и в представленном порядке. Оптимизатор не осмеливается их объединять, потому что может быть прямая ссылка на предыдущие вставки.
Я думаю, люди пишут такой код, потому что именно так вы бы читали перфокарты. Каждая карта поступает в устройство чтения карт, буферизуется и записывается в порядке поступления на магнитную ленту или дисковый файл. Добро пожаловать в 1960-е! Перестаньте подражать старым языкам программирования, таким как FORTRAN или BASIC, в которых были операторы WRITE, помещающие по одной записи за раз в файл. Начните думать о работе с целыми множествами.
Продолжить чтение "Предложение VALUES или создание таблиц из ничего"