Швидкість виконання 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.
Recent comments
13 years 11 weeks ago
13 years 13 weeks ago
13 years 47 weeks ago
14 years 2 weeks ago
14 years 40 weeks ago
15 years 11 weeks ago
15 years 17 weeks ago
15 years 22 weeks ago
15 years 25 weeks ago
15 years 39 weeks ago