SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 23.03.2018 17:30:46

Alex7892
Участник
Зарегистрирован: 23.03.2018
Сообщений: 2

Поиск до первого вхождения в MySQL

Есть 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)

Неактивен

 

#2 23.03.2018 17:50:08

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Поиск до первого вхождения в MySQL

Alex7892 написал:

нужно найти количество уникальных строк с определенными значениями

Alex7892 написал:

Не нужно, чтобы перебирало все 13511 строк, только чтобы при первом вхождении (например, нашло первую строку с "apple") переходило к поиску следующего значения ("banana") и т.д.

это противоречащие утверждения
как можно посчитать кол-во, если останавиться при нахождении первого значения?

Неактивен

 

#3 23.03.2018 17:51:35

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Поиск до первого вхождения в MySQL

Для Вашего запроса нужен специальный алгоритм, которого скорее всего в MySQL нет. Попробуйте переписать через JOIN с группировкой, вдруг такой алгоритм для JOIN есть.

Неактивен

 

#4 23.03.2018 18:00:34

Alex7892
Участник
Зарегистрирован: 23.03.2018
Сообщений: 2

Re: Поиск до первого вхождения в MySQL

vasya написал:

Alex7892 написал:

нужно найти количество уникальных строк с определенными значениями

Alex7892 написал:

Не нужно, чтобы перебирало все 13511 строк, только чтобы при первом вхождении (например, нашло первую строку с "apple") переходило к поиску следующего значения ("banana") и т.д.

это противоречащие утверждения
как можно посчитать кол-во, если останавиться при нахождении первого значения?

Подправил вопрос

Неактивен

 

#5 23.03.2018 18:17:26

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Поиск до первого вхождения в MySQL

У Вас в запросе поиск по fruits, а DISTINCT на field1. По описанию кажется, что Вам нужно count(DISTINCT fruits). Это опечатка?
А есть индекс на fruits?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson