Відповідь до коментаря

Швидкість виконання 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-вибірки, які на великих таблицях можуть суттєво завантажити сервер бази даних.

Reply

Ця інформація зберігається приватно і не буде оприлюднена.
  • Адреси Веб-сторінок і адреси е-пошти автоматично перетворюються у посилання.
  • Допустимі HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Лінійки і параграфи розриваються автоматично.

Більше інформації про можливості форматування

CAPTCHA
Це питання дозволяє переконатися нам що Ви є реальним відвідувачем сайту і захищає сайт від спаму.
          _  __  _____   _____   _____  __   __
__ _ | |/ / | ___| | ____| |___ / \ \ / /
/ _` | | ' / | |_ | _| |_ \ \ V /
| (_| | | . \ | _| | |___ ___) | | |
\__, | |_|\_\ |_| |_____| |____/ |_|
|___/
Уведіть код із схематично зображених символів.