Задавайте вопросы, мы ответим
Вы не зашли.
Есть 2.000.000-ая таблица, в ней нужно найти количество строк с определенными значениями (для примера взял значения "apple", "banana" и т.д.).
Код:
SELECT COUNT(DISTINCT field1) FROM table WHERE fruits IN ('apple','banana', ...);
Пробую EXPLAIN, выводит большое количество rows (13511).
Не нужно, чтобы перебирало все 13511 строк, только чтобы при первом вхождении (например, нашло первую строку с "apple") переходило к поиску следующего значения ("banana") и т.д.
Строк с "apple" или "banana" может быть много, а может и не быть. И важно знать, есть ли хоть одна строка со значением "apple" или "banana". Если есть такая, то + к счетчику
Отредактированно Alex7892 (23.03.2018 17:59:09)
Неактивен
Alex7892 написал:
нужно найти количество уникальных строк с определенными значениями
Alex7892 написал:
Не нужно, чтобы перебирало все 13511 строк, только чтобы при первом вхождении (например, нашло первую строку с "apple") переходило к поиску следующего значения ("banana") и т.д.
это противоречащие утверждения
как можно посчитать кол-во, если останавиться при нахождении первого значения?
Неактивен
Для Вашего запроса нужен специальный алгоритм, которого скорее всего в MySQL нет. Попробуйте переписать через JOIN с группировкой, вдруг такой алгоритм для JOIN есть.
Неактивен
vasya написал:
Alex7892 написал:
нужно найти количество уникальных строк с определенными значениями
Alex7892 написал:
Не нужно, чтобы перебирало все 13511 строк, только чтобы при первом вхождении (например, нашло первую строку с "apple") переходило к поиску следующего значения ("banana") и т.д.
это противоречащие утверждения
как можно посчитать кол-во, если останавиться при нахождении первого значения?
Подправил вопрос
Неактивен
У Вас в запросе поиск по fruits, а DISTINCT на field1. По описанию кажется, что Вам нужно count(DISTINCT fruits). Это опечатка?
А есть индекс на fruits?
Неактивен