siv1987

siv1987
Рейтинг
427
Регистрация
02.04.2009
sidorka:
Внешний цикл - цикл на любом языке, в моем случае пхп, в котором я меняю условия выборки из БД.
Внутренний цикл - в данном случае, как раз тот хитрый запрос с накопительной переменной.

Лучше писать общечеловечискими принятыми терминами - цикл значит цикл, на каком бы языке он не был, запрос значит запрос и тд.

Лям строк не так критично чтобы растягивалось на световые годы. Перед обновлением удалите индексы в которые есть обновляемые поля, желательно оставить только первичный ключ. Обновление или выборку можете делать циклами по 1000 строк например.

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

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

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

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

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

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

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

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

CREATE INDEX necessary_field ON table (necessary_field, index_id, quantity);

SELECT necessary_field FROM table WHERE (index_id=15 AND quantity=4) OR (index_id=19 AND quantity=2) GROUP BY necessary_field HAVING COUNT(*)=2;

2* - количество блоков с условиями (либо COUNT(*) >= 2)

DLE конечно. Все в одном

В прошлой теме мы остановились на


SELECT T.*
FROM Товары T
WHERE EXISTS(SELECT * FROM характеристики H WHERE H.Id=T.Id AND H.feature_id='pp' and H.value IN ('8','8.7')) AND
EXISTS(SELECT * FROM характеристики H WHERE H.Id=T.Id AND H.feature_id='pos' and H.value IN ('Android', 'iOS'))

SELECT * FROM table t

WHERE EXISTS (SELECT 1 FROM table WHERE t.necessary_field=necessary_field AND index_id=15 AND quantity=4)

AND EXISTS (SELECT 1 FROM table WHERE t.necessary_field=necessary_field AND index_id=19 AND quantity=2)

hYPER-ok:
вариант с OR работает неверно, написанный вариант вообще не работает (и вроде как не может из-за структуры mysql).

Вариант с OR работает как раз верно, а вот AND в вашем варианте по сути не будет работать, потому что не может одновременно и quantity=4 и quantity=8, он либо 8 либо 4 (что и есть в случае OR). /ru/forum/801232

sidorka, что такое "внешний цикл"? И что такое внутренний цикл, раз есть внешний? Что такое "возможности mysql"? Пользовательские функции и процедуры? Так и пишите. Пишите нормально чтобы люди вас понимали, а то пока нихера не понятно.

Пора бы уже знать что java и javaScript два разных языка..

Что то я не понимаю здесь роль этой переменной.

Если работает правильно тогда в чем проблема?

Всего: 6568