Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оптимизация запроса, like 
:(
    Опции темы
Secandr
Дата 30.8.2005, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 6
Всего: 39



У меня есть пара таблиц
Код

CREATE TABLE `txt` (
  `id` int(11) NOT NULL auto_increment,
  `open` datetime NOT NULL default '0000-00-00 00:00:00',
  `kat` smallint(6) NOT NULL default '1',
  `level` enum('0','1','2','3') NOT NULL default '3',
  `text` text NOT NULL,
  `status` enum('0','1','2') NOT NULL default '0',
  `close` datetime NOT NULL default '0000-00-00 00:00:00',
  `h_open` int(11) NOT NULL default '0',
  `h_close` int(11) NOT NULL default '0',
  `last_id` int(11) default NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;



Код

CREATE TABLE `about` (
  `id` int(11) NOT NULL auto_increment,
  `txt` smallint(6) NOT NULL default '0',
  `from` smallint(6) NOT NULL default '0',
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  `text` text NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;


Там хранятся заявки клиентов(`txt`) и обсуждение этих заявок (`about`) помимо этого есть ещё куча технических таблиц, но они нам не нужны.

Моя задача: "найти слово в обсуждении". Это может быть название клиента, номер телефона, вообщем что угодно.
Я делаю это так:
Код

    SELECT txt.id,
       `txt`.`text`,
       `a_find`.`id` 'fid',
       `a_find`.`text` 'ft'
       FROM `txt` as `txt`
                 LEFT JOIN `about`    as `a_find`    ON (`txt`.`id`=`a_find`.txt)
       WHERE  (`txt`.`text` like "%150%" or `a_find`.`text` like "%150%")
       ORDER BY `txt`.`id` , `a_find`.`id` DESC 

Запрос может быть сложнее... Но даже вот такой запрос ужастно тормозит. Выполняется он 15-20 секунд. Так что работать совершено не возможно smile Записей в таблицах по несколько тысяч 5 000 - 10 000

Что можно сделать?

Это сообщение отредактировал(а) Secandr - 30.8.2005, 10:13


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
MOP
Дата 31.8.2005, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 28.8.2005

Репутация: нет
Всего: нет



какая верся MySQL (важно)
PM MAIL WWW ICQ MSN   Вверх
Akina
Дата 1.9.2005, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Secandr
Как насчет FULLTEXT INDEX & SEARCH?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
-=Ustas=-
Дата 1.9.2005, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 4
Всего: 69



Secandr, а может тебе лучше делать какую-нибудь дополнительную таблицу с ключевыми словами и ссылками на реальное местопололжение? Тогда и запрос будет гораздо проще.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Secandr
Дата 1.9.2005, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 6
Всего: 39



MOP MySQL 4.0.24
Akina Я топик открыл http://forum.vingrad.ru/index.php?showtopic=62784
-=Ustas=- Слишком разные запросы и редко повторяются. Доп. таблицы не реально. Я об этом сразу же думал. Можно ещё изменить структуру таблицы, но тогда на первый план выходит человеческий фактор: слишком много пользователей, работа рутиная => много ошибок при заполнении полей...


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
-=Ustas=-
Дата 1.9.2005, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 4
Всего: 69



Я имею ввиду следующее. Создать таблицу searchWords, с полями id, key_id, words. Когда данные внесенные в основную таблицу, уже готовы и правильные, то запускать, допустим скрипт индексации. Который перебирает основную таблицу, выбирает из нее уникальные слова и забивает в words, а в key_id забивает текущий id-ишник записи из основной таблицы, чтобы потом мона было ссылаться на нее. И в итоге мы получаем поиск только по одному полю, а данные затем выводим по связи. ИМХО, я бы так сделал. А тот скрипт, который забивает таблицу searchWords привязать на cron и всё.
ЗЫ. Это мое мнение....

Это сообщение отредактировал(а) -=Ustas=- - 1.9.2005, 11:33


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Secandr
Дата 1.9.2005, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 6
Всего: 39



-=Ustas=- А смысл иметь такие траты? Представляешь сколько будет таких слов?
Добавлено @ 11:41
P.S. Мне бы с FULLTEXT INDEX & SEARCH разобраться!


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
-=Ustas=-
Дата 1.9.2005, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 4
Всего: 69



Цитата(Secandr @ 1.9.2005, 11:41)
Представляешь сколько будет таких слов?

Зато поиск будет проходить гораздо быстрее в одном поле, нежели в нескольких связанных!


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.