кто-то сталкивался и на каких версиях что быстрее? на простых запросах похоже оптимизатор приводит их к одному типу.
armadillo Как-то очень смахивает на вопрос "что лучше, пила или молоток"... хотя бы приведи примеры использования
Давал ссылку буквально на днях (на более старое моё сообщение) где примеры совершенно "странных" результатов Только там OR не было, но IN был и JOIN ещё http://php.ru/forum/viewtopic.php?p=60598#60598 (а по теме конкретнее опиши ситуацию, может у тебя там какой другой случай типа RAND или ещё чего мешает...)
а у меня в зависимости от бд и типа запроса были быстрее то or, то in. иногда разница достигала разов. я ещё плакался тут на эту тему недавно...
Мне здесь больше всего интересно, как работает запрос SELECT * FROM table WHERE id IN (...), где id - индексированное поле. Одно из двух, либо 1) мускул поочередно отслеживает каждое значение id из списка, опускаясь по дереву индекса; либо 2) мускул пробегает по всей таблице, для каждой записи проверяя, соответствует ли она списку. Первый способ явно предпочтительнее (по крайней мере на больших таблицах), но у меня почему-то в зависимости от версии (сейчас я на 4.1) и объема таблицы получались совсем разные результаты возникало такое ощущение, что он действительно последовательно пробегает все записи, просто в качестве оптимизации ограничивает область поиска минимальным и максимальным значением id. Но это все равно не есть гуд...
Сравниваем. [sql]SELECT SQL_NO_CACHE * from task, clients where ts_cl_id=cl_id AND cl_status=1 and ts_result_id>0[/sql] и [sql]SELECT SQL_NO_CACHE * from task , (SELECT cl_id from clients where cl_status=1) t1 where ts_cl_id =cl_id and ts_result_id>0[/sql] у кого что быстрее?