Оптимизация полнотекстового поиска | |
---|---|
Goodwin Автор Сообщений: 3539 Откуда: Омск Дата регистрации: 03.05.2006 |
Доброго вам понедельника.
Вводная: есть список телефонных номеров (максимум три) Есть таблица с полем phones, в котором записаны так же телефонные номера разделённые пробелом (то же не больше трех) Задача: Выбрать записи, в которых хотя бы один номер совпадает с номером из списка. Решение очевидно: сформировать запрос типа select * where ' 1234 '$(' '+phones+' ') or ' 5678 '$(' '+phones+' ') Но таблица большая, запрос тормозит весьма. Как его можно ускорить пользуясь, например, тем, что номеров в поле небольше тёх, или что они фиксированных длинн (только 6 или 10 знаков)? На последок оставляю вариант с заведением трёх полей с индексами, но не хотелось бы. Да, тема тут, а не в основной ветке, т.к. таблица в mysql, но, думаю, большинство идей на фоксе смогу реализовать и там. ------------------ Что мы знаем о лисе? Ничего. И то не все. (С)Б. Заходер |
Re: Оптимизация полнотекстового поиска | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
Построить соответствующие индексы через выражения/ф-ии, только я не знаю строит ли mysql такие индексы .
Типа:
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 13.12.10 16:23 |
Re: Оптимизация полнотекстового поиска | |
---|---|
Владимир Максимов Сообщений: 14100 Откуда: Москва Дата регистрации: 02.09.2000 |
Ускорение основывается на уменьшении неопределенности того, что и где именно искать.
В данном случае неопределенность можно уменьшить только выделив номера телефонов из общей строки. Или хотя бы жетско ограничив позиции, где они могут находится. Например, первый номер - позиции с 1 по 10, второй номер - позиции с 12 по 21, третий номер - позиции с 23 по 32. Поиск по конкретным "координатам", как правило, выполняется быстрее. Хотя, конечно, еще быстрее будет выделить отдельные номера в отдельную таблицу симулирующую полнотекстовый поиск. Ну, или хотя бы, если это возможно, построить индексы, по выражениям, содержащим отдельные номера. То, что в FoxPro возвращает GetWordNum() |
Re: Оптимизация полнотекстового поиска | |
---|---|
Goodwin Автор Сообщений: 3539 Откуда: Омск Дата регистрации: 03.05.2006 |
Спасибо, для фокса рабочие варианты.
Но mysql по выражениям индексировать не умеет. Значить буду поля плодить. ------------------ Что мы знаем о лисе? Ничего. И то не все. (С)Б. Заходер |
© 2000-2024 Fox Club  |