LINUX.ORG.RU
ФорумAdmin

mysql where conditions


0

1

Привет,

есть такая query:

mysql> select field1,field2,field3 from tabl where name like '%somename%' and id > 100;
как задать чтобы mysql сначала делал выборку по id > 100, а потом по тому что выберет a.name like '%somename%'. Ну те понятно что выборка a.name like по всей таблицы может занять кучу времени, а вот если сразу отсечь выборку более быстрой id > 100 - это значительно сократит выборку.


Есть мнение, чтьо мускуль не дурак, и условие, касающееся главного ключа, отработает первым.

thesis ★★★★★
()
Ответ на: комментарий от ethereal
select * from (select field1,field2,field3 from tabl where  id > 100) as t where t.name like '%somename%';

хм, что-то как-то муторно, а если у меня 3 или 4 условия выборки будут? вообще 4х этажный селект будет?

индексы

а если индексы на обоих полях?

Есть мнение, чтьо мускуль не дурак, и условие, касающееся главного ключа, отработает первым.

а если поиск по равнозначным полям? я хочу явно задать приоритет по какому полю начинать выборку.

httpd
() автор топика
Ответ на: комментарий от httpd

Не уверен, но мне тоже кажется что мускуль совсем не дурак и посмотрит на сложность заданных условий. like явно труднее чем «>».

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

Не уверен, но мне тоже кажется что мускуль совсем не дурак и посмотрит на сложность заданных условий. like явно труднее чем «>».

или нет..

httpd
() автор топика
Ответ на: комментарий от MrClon

MySQL умеет показывать, дурак он, или нет:

http://dev.mysql.com/doc/refman/5.5/en/explain.html

Для того, чтобы понять, как работают индексы, хорошо посмотреть презентацию Петра Зайцева:

https://oracleus.activeevents.com/2013/connect/fileDownload/session/72A0100A9...

undertaker ★★
()
Ответ на: комментарий от undertaker

поничую, прежде чем всякую ерунду выдумывать всегда зри в план.

fornlr ★★★★★
()
Ответ на: комментарий от httpd

Продолжая мнение что мускул не дурак, вполне возможно он догадывается что оператор сравнения над числом быстрее неточного сравнение строк и делат ленивое И. Ты проверял, действительно ли тормозит и смотрел как он твои запросы выполняет?

Ещё интересно, порядок операндов AND имеет значение?

Kalashnikov ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.