Оптимизация запроса со сравнением строк

BelStudent

целеустремлённый чел
Оптимизация запроса со сравнением строк

Есть SQL-запрос:
SELECT `id` FROM `table` WHERE `fio`=$str
где $str - моя строка
Нужна оптимизация этого кода и я вот что подумал, сранение строк довольно медленно идёт, а может в таблицу БД записывать и СУММУ СИМВОЛОВ?
Примерно так:
Для фамилии Иванов мы получим:
s=ord('И')+ord('в')+ord('а')+ord('н')+ord('о')+ord('в')
А потом в WHERE уже забивать не сранение строк, а сравнение чисел.
Т.е. кажлому `fio` в БД получиться своё число.
Если случиться так что в таблице имется несколько одинаковых чисел (так получилось, что сумма одинакова), то только тогда сравнивать строки.
Ну как вам? Будет выигрыш в скорости? а?

p.s. только я вот подумал, а что если эти числа потом в БД отсортировать, например, по возрастанию?
Тогда если получили запрос с '..WHERE `fio`=$str' считаем сумму символов в строке $str, а потом с помощью билинейного поиска БЫСТРО находим нужный id.
Теоретически запросы должны летать.
 

Фанат

oncle terrible
Команда форума
совершенно верно. такая запись в бд, заранее отсортированная, называется "индекс".
 

BelStudent

целеустремлённый чел
Автор оригинала: *****
совершенно верно. такая запись в бд, заранее отсортированная, называется "индекс".
Что-то не понял тебя. Индекс это само-сабой, он сам добавляется (auto_increment), я же говорю о ПОЧТИ уникальном числе, которое ставиться в соответствие каждой строке.
 

BelStudent

целеустремлённый чел
Почитал про индексы. Так получается mysql автоматически делает индексы или опцию надо включить?
 

niko111

Новичок
Автор оригинала: BelStudent
Почитал про индексы. Так получается mysql автоматически делает индексы или опцию надо включить?
нужно будет создать индекс на определенный столбец (группу столбцов)
 

Glazyrin Sergey

Новичок
Только учти что InnoDB не поддерживает full text search поэтому таблица должна быть MyISAM.
Если тебе нужен Full text search
А вообще в одном проекте я юзаю http://sphinxsearch.com/ - намного быстрей чем базы данных
То есть даже для поиска какого уникального куришь доки по сфинксу и вперед :)
 

BelStudent

целеустремлённый чел
Сфинкс я юзаю, но один маленький минус сфинкса - это "монолитность" индекса. Если база обнавляется динамически (например кеш запросов), то сфинкс здесь не помошник (не буду же я перезапускать его реиндексацию каждую минуту)
 

Glazyrin Sergey

Новичок
ммммммм - если я вас правильно понял. то вы говорите о проблеме индексации больших объемов данных
Почитайте тут
http://www.sphinxsearch.com/docs/current.html#live-updates
 

BelStudent

целеустремлённый чел
Над этим стоит подумать, м.б. схема main + delta и будет выходом.
Glazyrin Sergey, не знаешь статьи на русском по сфинкс есть. А то только одну нашёл на IBM.com. Но этого мало.
 

Glazyrin Sergey

Новичок
Я привел не потому что неустроил, а чисто привел свою точку зрения на то как лучше делать
 

Фанат

oncle terrible
Команда форума
но при этом ты не имеешь ни малейшего представления, ЧТО именно нужно сделать. но берешься решать - как лучше.
я тебе написал уже, в другом топике, про твою точку зрения. прими к сведению.
и вопрос был не тебе. поскольку ты на него ответить все равно не можешь.
 

BelStudent

целеустремлённый чел
Автор оригинала: *****
а чем обычный поиск по базе-то не устроил?
Пока думаю мне и стандартного хватит, но если Sphinx реально быстрее работает (согласно презентации (ppt-файл) Shodana на Интернет технологиях за 2007 год) зачем стандартный использовать?
 

Фанат

oncle terrible
Команда форума
вот я тоже думаю, что тебе и стандартного хватит, тем более, что ты про него только сегодня узнал.
 

Glazyrin Sergey

Новичок
ЗЫ У всех прошу прощения за возможно иногда не в тему мои комментарии
Сорри
Впредь буду стараться давать комментарии конкретно по теме :(
 
Сверху