|
ресурсоемкий запрос
|
|||
---|---|---|---|
#18+
Есть две таблицы: в одной хранятся описания товаров, в другой предметный указатель... CREATE TABLE catalog( catalogid INT(4) UNSIGNED PRIMARY KEY AUTO_INCREMENT, description CHAR(255), measurement CHAR(16), price CHAR(16), company CHAR(64), phone CHAR(32), INDEX (description(16)) ); CREATE TABLE word( wordid INT(4) UNSIGNED PRIMARY KEY AUTO_INCREMENT, word CHAR(64), INDEX (word(16)) ); например в первой таблице может в поле "description" может храниться "Аксессуары для жидких обоев", а во второй в поле "word" - слово "аксессуар". в первой тиблице строк порядка 3-4 тысяч, во второй 1600 строк... запрос типа: SELECT a.catalogid, a.description, a.measurement, a.price, a.company, a.phone, IFNULL(b.word, '') AS keyword FROM catalog.work AS a LEFT JOIN catalog.word AS b ON (a.description LIKE CONCAT(b.word, '%')) GROUP BY a.catalogid ORDER BY a.description выполняется порядка 30 сек. что очень долго. Знаю что join очень ресурсоемкая операция... как можно было бы оптимизировать этот запрос??? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2003, 15:48 |
|
ресурсоемкий запрос
|
|||
---|---|---|---|
#18+
Покажи explain ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2003, 17:30 |
|
ресурсоемкий запрос
|
|||
---|---|---|---|
#18+
И еще до explain сразу скажу, что индекс по description использоваться не будет, потому что по description делается like <<expression>>, и сервер во время оптимизации не знает точно какой будет результат у этого expression. Поэтому у вас left join делается практически без индексов. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2003, 17:35 |
|
ресурсоемкий запрос
|
|||
---|---|---|---|
#18+
а как добиться большой скорости, explain говорит что индексы не юзаются... можно ли вообще от join избавиться? просто он нужен был для того чтоб не пропадали строки, где нет совпадений, а они нужны... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2003, 18:49 |
|
ресурсоемкий запрос
|
|||
---|---|---|---|
#18+
от джоин не избавиться а чтобы не сделать проиндексированное поле word в таблице catalog и не класть туда обрезанный description пи каждом интерте/апдейте? или я не понял идею? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2003, 20:40 |
|
ресурсоемкий запрос
|
|||
---|---|---|---|
#18+
пи = при, ессно ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2003, 20:40 |
|
|
start [/forum/topic.php?fid=47&msg=32282199&tid=1855747]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 160ms |
0 / 0 |