SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#26 14.04.2011 14:41:48

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

Re: Помогите оптимизировать запрос SELECT на выборку элементов

Попробуйте OR заменить на WordID IN (892, ...)

Неактивен

 

#27 14.04.2011 15:16:49

straylon
Участник
Зарегистрирован: 13.04.2011
Сообщений: 23

Re: Помогите оптимизировать запрос SELECT на выборку элементов

Для чистоты эксперимента выполнил следующее:
set profiling=1;
SELECT word_weight.DocID FROM indexdata.word_weight
WHERE WordID = 68603 OR WordID = 204661 OR WordID = 16347
OR WordID = 68131;
show profiles;

Query_ID 17; Duration 2.41972925.
При увеличении количества WordID время Duration растет. Ничего не понимаю. Это все делаю не через MySQL Query Browser, а программно. Ничего не понимаю...

Неактивен

 

#28 14.04.2011 15:19:01

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

Re: Помогите оптимизировать запрос SELECT на выборку элементов

попробуйте написанное в сообщении #26

Неактивен

 

#29 14.04.2011 15:24:24

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Помогите оптимизировать запрос SELECT на выборку элементов

straylon, нужно SHOW PROFILE - без S на конце. Тогда будет видна детализация по запросу.

Это все делаю не через MySQL Query Browser, а программно.

А программно — это как? Что у вас за клиент?
Вы можете попробовать на клиенте не принимать результат, а просто послать запрос, чтобы он на сервере выполнился, а клиент его не обрабатывал? (все-таки подозрение на клиент — что из-за него медленно)

Неактивен

 

#30 14.04.2011 15:24:36

straylon
Участник
Зарегистрирован: 13.04.2011
Сообщений: 23

Re: Помогите оптимизировать запрос SELECT на выборку элементов

Просмотрел show profile for query 17;

Все параметры маленькие, кроме 'Sending data',  = 2.388797.

Но данные мне нужны же? Да и тестил на запрос вида SELECT Count(*) - где всего одна строчка должна быть, как sending data, все равно время время 'Sending data' от 3 секунд и выше

Неактивен

 

#31 14.04.2011 15:30:03

straylon
Участник
Зарегистрирован: 13.04.2011
Сообщений: 23

Re: Помогите оптимизировать запрос SELECT на выборку элементов

LaZy, в том то и загвоздка, что клиент посылает запрос (вот кусок кода на Qt):
QString frelev_file = "SELECT word_weight.DocID FROM indexdata.word_weight WHERE  WordID = 68603 OR WordID = 204661 OR WordID = 16347 OR WordID = 68131";
query.prepare(frelev_file);
query.exec();
Т.е. просто посылаю на сервер на выполнение и все. Никак результат не обрабатываю. Мистика... Если количество WordId в запросе больше, чем 3 слова, то выплняется от 2 секунд и выше, если 1-2  слова, то около секунды.

Неактивен

 

#32 14.04.2011 15:32:13

straylon
Участник
Зарегистрирован: 13.04.2011
Сообщений: 23

Re: Помогите оптимизировать запрос SELECT на выборку элементов

Что за время такое Sending data  в случае всего одной строки COUNT(*). Вот что странно.

Неактивен

 

#33 14.04.2011 16:08:10

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Помогите оптимизировать запрос SELECT на выборку элементов

Да, странно..

Впрочем, ходят слухи, что  Sending data может отхватывать время у Executing. Т.е. в это время запрос действительно выполняется. На это указывает также высокая загрузка процессора, о которой вы упоминали.

Скажите, какой у вас процессор?

Неактивен

 

#34 14.04.2011 16:09:19

straylon
Участник
Зарегистрирован: 13.04.2011
Сообщений: 23

Re: Помогите оптимизировать запрос SELECT на выборку элементов

Повозился еще. Для большинства запросов вида SELECT count(*) выполняется все достаточно быстро ~ 0,3 s, если все индексы загружены в память. Значит все дело в большой выборке (много DocID находится в результате запроса). Но проблема остается - мне же нужны как раз эти DocID, а не их число, да и выбрасывать нельзя (LIMIT), т.к. часть информации потеряется. А дальше их упорядочивание по GROUP BY и HAVING. Скорее всего для такой задачи, которая описана в самом первом сообщении, 3-4 секунды это нормальное время для MySQL. Вариант с WordID IN (, .... ) ничего не меняет sad

Неактивен

 

#35 14.04.2011 16:12:31

straylon
Участник
Зарегистрирован: 13.04.2011
Сообщений: 23

Re: Помогите оптимизировать запрос SELECT на выборку элементов

Сейчас все это тестировал на компе c процессором Intel на два ядра, каждое по 1.8 Ггц.

Неактивен

 

#36 14.04.2011 16:15:26

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Помогите оптимизировать запрос SELECT на выборку элементов

Да уж.. Все-таки странно, что так долго. Колонки-то короткие. 20000 записей по 6 байт - это ведь всего 100-200k. Странно, что он с ними так долго справляется.

Ну, возможно, тут действительно ничего не поделаешь sad

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

Неактивен

 

#37 14.04.2011 16:16:37

straylon
Участник
Зарегистрирован: 13.04.2011
Сообщений: 23

Re: Помогите оптимизировать запрос SELECT на выборку элементов

LaZy, да тут задача автоматического реферирования стоит, а не поиска. Вот такая вот фигня.

Неактивен

 

#38 14.04.2011 16:18:08

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Помогите оптимизировать запрос SELECT на выборку элементов

Ээ.. Что это собой представляет?

Неактивен

 

#39 14.04.2011 16:21:40

straylon
Участник
Зарегистрирован: 13.04.2011
Сообщений: 23

Re: Помогите оптимизировать запрос SELECT на выборку элементов

У вас есть статья на несколько страниц, можете краткую выдержку из нее прочесть самых информативных предложений (объем сами задаете, например, 7-10 предложений).

Неактивен

 

#40 14.04.2011 16:31:18

straylon
Участник
Зарегистрирован: 13.04.2011
Сообщений: 23

Re: Помогите оптимизировать запрос SELECT на выборку элементов

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


Прикрепленные файлы:
Attachment Icon 6.JPG, Размер: 283,219 байт, Скачано: 494

Неактивен

 

Board footer

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