Як підказує заголовок ... Я намагаюся розібратися в найшвидшому способі з найменшими накладними витратами, щоб визначити, чи існує запис у таблиці чи ні.
Зразок запиту:
SELECT COUNT(*) FROM products WHERE products.id = ?;
vs
SELECT COUNT(products.id) FROM products WHERE products.id = ?;
vs
SELECT products.id FROM products WHERE products.id = ?;
Скажіть, що ?
обмін замінено на 'TB100'
... і перший, і другий запити повернуть такий самий результат (скажімо ... 1
для цієї розмови). Останній запит повернеться так, 'TB100'
як очікувалося, або нічого, якщо його id
немає в таблиці.
Мета полягає в тому, щоб з’ясувати, чи id
є таблиця в таблиці чи ні. Якщо ні, програма наступним чином вставить запис, якщо він є, програма буде пропускати його або виконувати UPDATE-запит на основі іншої логіки програми поза межами цього питання.
Що швидше і менше накладні витрати? (Це буде повторюватися десятками тисяч разів за кожну програму та буде виконуватися багато разів на день).
(Запуск цього запиту щодо M $ SQL Server від Java через наданий M $ драйвер JDBC)
if exists(select null from products where id = @id)
; якщо у запиті, викликаному безпосередньо клієнтом select case when exists (...) then 1 else 0 end
.