22:45

А ты уже научился заряжать левой ногой свой телефон?
Кааак же я давно на SQL запросы не писал, во как красиво получилось
Потом объясню нафига он нужен
Upd 1: запрос подрос, это вам не животных кормить
Upd 2: запрос стал неприлично большим
Upd 3: Я НЕНАВИЖУ ЭТО ЗАПРОС он выполняется 12.2704 СЕКУНД

во так красивее paste.org.ru/?vw900t

читать дальше

Комментарии
12.11.2008 в 01:04

Все для ничто.
*зевает* 12 секунд... всего-то

Экспериментальный запрос у нас недавно выполнялся 1153 секунды. Есть стойкое ощущение, что в одной из девяти таблиц, участвующих в выборке забыли индекс :)

ЗЫ исходя из моего опыта подобное лучше разбить на отдельный запросы. Быстре будет работать.
12.11.2008 в 08:11

А ты уже научился заряжать левой ногой свой телефон?
NEKT
ну мне надо его вызывать каждый раз для каждого файла
файлов в базе пока 690 и это меня реально не прикалывает т.к. запрос надо обязательно улучшать

попробую сделать что ты посоветовал
12.11.2008 в 09:49

А ты уже научился заряжать левой ногой свой телефон?
во так красивее paste.org.ru/?vw900t

индексы оказались установлены т.к. мне нужны значения ключей и вторичных ключей
второй select, заканчивающийся в низу, в as p2 , выполняется 1.2 секунды
без group by весь запрос будет 2 сек. занимать
а без SUM в самом верхнем select тоже около 2 сек
значит ему 12768 умножений и сложений так тяжело даются, это тупик ?

EXPLAIN показывает

id
select_type
table
type
possible_keys
key
key_len
ref
rows
Extra
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 86 Using temporary; Using filesort
1 PRIMARY webdata ref idWord idWord 4 p2.idword 32  
2 DERIVED <derived5> system NULL NULL NULL NULL 1  
2 DERIVED <derived9> system NULL NULL NULL NULL 1  
2 DERIVED <derived3> ALL NULL NULL NULL NULL 97  
2 DERIVED <derived4> ALL NULL NULL NULL NULL 14419 Using where; Using join buffer
2 DERIVED <derived8> ALL NULL NULL NULL NULL 14458 Using where; Using join buffer
9 DERIVED FILE index NULL PRIMARY 4 NULL 817 Using index
8 DERIVED filedata index NULL idWord 4 NULL 71886 Using index
5 DERIVED <derived6> ALL NULL NULL NULL NULL 97  
5 DERIVED <derived7> ALL NULL NULL NULL NULL 14419 Using where; Using join buffer
7 DERIVED fileData index NULL idWord 4 NULL 71886 Using index; Using temporary; Using filesort
7 DERIVED word eq_ref PRIMARY PRIMARY 4 neuroweb.fileData.idWord 1 Using index
6 DERIVED filedata ref idFile idFile 4   97  
4 DERIVED fileData index NULL idWord 4 NULL 71886 Using index; Using temporary; Using filesort
4 DERIVED word eq_ref PRIMARY PRIMARY 4 neuroweb.fileData.idWord 1 Using index
3 DERIVED filedata ref idFile idFile 4   97  

13.11.2008 в 00:56

Все для ничто.
SonicCat ты до скольки хочешь это все довести?

Практика показывает что выборка через временную таблицу будет быстрее, нежели через вложенные запросы. Плюс в ней ты можешь сделать индексы перед выборкой.
13.11.2008 в 18:46

А ты уже научился заряжать левой ногой свой телефон?
NEKT
не, все спасибо, нашел ошибки
1) where webdata.idword = p2.idword - тут должен браться не p2.idword а select words.idword as thisId
2) содержание таблицы webdata было не верным т.е. были поля которых быть не должно
3) замена where на INNER JOIN увеличила скорость

итого выполняется за 2 сек

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail