Швидкість виконання 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 5 weeks ago
13 years 7 weeks ago
13 years 41 weeks ago
13 years 48 weeks ago
14 years 34 weeks ago
15 years 5 weeks ago
15 years 11 weeks ago
15 years 16 weeks ago
15 years 19 weeks ago
15 years 33 weeks ago