Я убираю чужой код. При переходе через очень сложную систему, которая генерирует очень сложные запросы SQL, я вижу много использования ИН() ИНЕКЕ:MySQL 5.5: лучше ли использовать IN (...) или серию EQUALS-AND?
SELECT * FROM table
WHERE field1 IN(1, 2, 3, 4, 5)
AND type IN(1, 2, 3)
... и так далее. Является ли это лучше для производительности, чтобы собрать серию field = 1 OR field = 2 OR...
так:
SELECT * FROM table
WHERE (field1 = 1 OR field1 = 2 OR field1 = 3 OR field1 = 4 OR field1 = 5)
AND (type = 1 OR type = 2 OR type = 3)
или лучше использовать IN()? Даже для одного значения, такого как type IN(1)
?
Отметьте 'EXPLAIN' для обоих. «который генерирует очень сложные SQL-запросы» - неужели вы уверены, что изменили их на самом деле? – zerkms
@zerkms: Использование EXPLAIN не показывает разницы. Включение профилирования в phpMyAdmin генерирует совершенно разные результаты. – user2624632