Швидкість виконання SELECT-запитів різних конструкцій

Різні СКБД по різному виконують ідентичні SELECT-запити, записані за допомогою різних конструкцій.

Наступні два запити є ідентичні за результатом

SELECT …
FROM tab1 INNER JOIN tab2 ON tab1.fld1=tab2.fld2
WHERE …;

SELECT …
FROM tab1, tab2
WHERE tab1.fld1=tab2.fld2
…;

Виявляється, Oracle 9i другий запит на порядок швидше виконує, ніж перший. Тоді як MS Access виконує їх за швидкістю з точністю до навпаки (на жаль не маю можливості поексперементувати з MS SQLServer, але припускаю такий же результат).

Незалежно від СКБД UNION-вибірки завжди виконуються довше, ніж відповідні вибірки без UNION. Наступні два запити ідентичні
SELECT …
FROM tab
WHERE tab.id=’abc’
UNION
SELECT
WHERE tab.id=’dfg’;

SELECT …
FROM tab
WHERE tab.id IN (’abc’,’dfg’);

Однак другий запит на порядок швидше виконуватиметься, ніж перший. Взагалі, рекомендую при можливості уникати UNION-вибірки, які на великих таблицях можуть суттєво завантажити сервер бази даних.

Джерело - http://pzhe.net/ua/querying_speed.

© Інформаційні технології. Аналітика , Рідна Мережа