Я відновив повільний розділ програми, яку ми отримали у спадок від іншої компанії, щоб використовувати внутрішнє з'єднання замість підзапиту типу:
WHERE id IN (SELECT id FROM ...)
Повторно налаштований запит працює приблизно в 100 разів швидше. (~ 50 секунд до ~ 0,3) Я очікував на покращення, але хтось може пояснити, чому це було так різко? Стовпці, що використовуються в пункті, де всі були індексовані. Чи виконує SQL запит у пункті де раз на рядок чи щось таке?
Оновлення - Поясніть результати:
Різниця полягає у другій частині запиту "де id in ()" -
2 DEPENDENT SUBQUERY submission_tags ref st_tag_id st_tag_id 4 const 2966 Using where
vs 1 індексований рядок з приєднанням:
SIMPLE s eq_ref PRIMARY PRIMARY 4 newsladder_production.st.submission_id 1 Using index