powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / ресурсоемкий запрос
7 сообщений из 7, страница 1 из 1
ресурсоемкий запрос
    #32282199
real_MaRk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две таблицы: в одной хранятся описания товаров, в другой предметный указатель...
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 очень ресурсоемкая операция... как можно было бы оптимизировать этот запрос???
...
Рейтинг: 0 / 0
ресурсоемкий запрос
    #32282409
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажи explain
...
Рейтинг: 0 / 0
ресурсоемкий запрос
    #32282421
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще до explain сразу скажу, что индекс по description использоваться не будет, потому что по description делается like <<expression>>, и сервер во время оптимизации не знает точно какой будет результат у этого expression.

Поэтому у вас left join делается практически без индексов.
...
Рейтинг: 0 / 0
ресурсоемкий запрос
    #32282537
real_MaRk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как добиться большой скорости, explain говорит что индексы не юзаются... можно ли вообще от join избавиться? просто он нужен был для того чтоб не пропадали строки, где нет совпадений, а они нужны...
...
Рейтинг: 0 / 0
ресурсоемкий запрос
    #32282602
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
от джоин не избавиться

а чтобы не сделать проиндексированное поле word в таблице catalog и не класть туда обрезанный description пи каждом интерте/апдейте?

или я не понял идею?
...
Рейтинг: 0 / 0
ресурсоемкий запрос
    #32282603
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пи = при, ессно
...
Рейтинг: 0 / 0
ресурсоемкий запрос
    #32282914
real_MaRk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а по какое обрезать description то и пихать в word???
просто исходные данные две таблицы... какие я описал...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / ресурсоемкий запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]