несколько полей в выборке mysql

1 23
hYPER-ok
На сайте с 09.10.2010
Offline
71
#21

Если по 3 полям индекс делаю, то выборка идет всех записей (rows в explain). А если делаю index+quantity и necessary, то rows в виде найденных и кака в виде Using where; Using temporary; Using filesort :D

siv1987
На сайте с 02.04.2009
Offline
427
#22
hYPER-ok:
Если по 3 полям индекс делаю, то выборка идет всех записей (rows в explain)

Для этого есть GROUP BY

PS
Ощущения дежавю. по моему я это уже где-то писал

hYPER-ok
На сайте с 09.10.2010
Offline
71
#23
siv1987:
Для этого есть GROUP BY

Не понял Вас - для чего :)

Если я правильно понимаю, то колонка ROWS в EXPLAIN означает количество записей по которым идет поиск.

Дак вот, в одном случае - где 3 поля в индексе, там фуллскан происходит. В случае с 2 полями индекса и 1 в групп бай, то там показывает ROWS = выбранные поля (ну типа индекс прошел гуд).

iqmaker
На сайте с 17.04.2012
Offline
342
#24

хм, написал, потом увидел что-то похожее выше:


SELECT necessary_field, COUNT(necessary_field) 'checked' FROM test_table WHERE (index_id=15 AND quantity=4) OR (index_id=19 AND quantity=2) GROUP by necessary_field HAVING checked=2;

где checked=2 (количество проверяемых атрибутов, т.е. 2 значит 2 и т.п. )

ну или так:


SELECT necessary_field, COUNT(necessary_field) 'checked' FROM test_table WHERE (index_id=15 AND quantity=4) OR (index_id=19 AND quantity=2) GROUP by necessary_field HAVING checked>0 ORDER BY checked DESC;

Самая верхняя строка наиболее подходящий объект, по убыванию количества попаданий.

siv1987
На сайте с 02.04.2009
Offline
427
#25
hYPER-ok:
Если я правильно понимаю, то колонка ROWS в EXPLAIN означает количество записей по которым идет поиск.

Так поиск а не выборка.

hYPER-ok:
Дак вот, в одном случае - где 3 поля в индексе, там фуллскан происходит. В случае с 2 полями индекса и 1 в групп бай, то там показывает ROWS = выбранные поля (ну типа индекс прошел гуд).

И в чем проблема если используется индекс? Естественно тут, чтобы найти все соответствующие столбцы нужно пройтись по всем строкам.

С индексом который я привел выше фуллскан не используется.

hYPER-ok
На сайте с 09.10.2010
Offline
71
#26

Всем по огромному бонгу, спасибо :)

Выбрал варик с count(*)=2

--

что бы я делал без Вас?..

1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий