Швидкість виконання 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
12 years 49 weeks ago
12 years 51 weeks ago
13 years 33 weeks ago
13 years 40 weeks ago
14 years 25 weeks ago
14 years 48 weeks ago
15 years 2 weeks ago
15 years 8 weeks ago
15 years 10 weeks ago
15 years 24 weeks ago