SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.10.2010 21:42:39

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

Обработка строк регулярными выражениями.

Здравствуйте.
Есть ли в MySql функции обрабатывающие строки с помощью регулярных выражений.
Просто мне необходимо из одной таблицы скопировать некоторые столбцы, а вторая таблица нужна для полнотекстового поиска.
Я не знаю влияют ли на скорость разный регистр слов и разные не нужные символы. Но точно что таблица будет весить меньше и следовательно поиск будет быстрее я уверен, но это скорее всего не большой процент. Может быть такие функции настолько медлительны что лучше ни делать ни каких обработок, а просто скопировать?

Неактивен

 

#2 15.10.2010 23:49:51

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Обработка строк регулярными выражениями.

Ничего не понял smile

Регулярные выражения есть — WHERE fieldname RLIKE 'regex',
но запросы с ними не используют индексы, поэтому они будут подходить
только для одноразового копирования данных (ведь Вы это собираетесь
сделать?).

Неактивен

 

#3 16.10.2010 00:35:22

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

Re: Обработка строк регулярными выражениями.

не таблица `tb` удаляется и создаётся заново каждый день следовательно с `tb_index` происходит то же самое (она зависит от `tb`).
`tb_index` это таблица с несколькими полями для более быстрого поиска по `tb`.

Неактивен

 

#4 16.10.2010 08:56:02

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

Re: Обработка строк регулярными выражениями.

Попробую объяснить по другому.

for(int i=0; i<1000000; i++) {
   "самоучитель mysql 5 (+ cd-rom)".replaceAll("[^а-яa-z]+"," ").replaceAll("[\\s]{2,}"," ");
}

Эта программа выполняется всего 6 сек.
Вот я и подумал что если MySql перед вставкой записи будет удалять лишние символы из строки. По идее это не должно  влиять на скорость вставки. А за ссылку спасибо почитаю, проверю.

Отредактированно Марк (16.10.2010 09:41:59)

Неактивен

 

#5 16.10.2010 10:59:32

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

Re: Обработка строк регулярными выражениями.

Походу в MySql только  можно искать с помощью рег. выражений.
Приходится делать такой запрос, а как обработать строки ХЗ

INSERT INTO `tb_index` (`id`,`text`)
SELECT `id`,CONCAT(`author`,' ',`name`) FROM tb;

Неактивен

 

#6 16.10.2010 13:58:14

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Обработка строк регулярными выражениями.

Какую-то Вы странную вещь делаете. Не проще воспользоваться полнотекстовым индексом?

Неактивен

 

#7 16.10.2010 14:49:28

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

Re: Обработка строк регулярными выражениями.

Простите не пойму причём здесь полнотекстовый индекс?
У меня есть несколько таблиц с кучей столбцов, в общем таблицы реально большие и весят очень много. Следовательно делать много-табличный запрос не имеет смысла. Легче взять необходимые столбцы из разных таблиц объединить в одной таблице в одном столбце предварительно обработав(т.е удалить короткие слова, запятые, кавычки и т.д) и добавить полнотекстовый индекс.

т.е у меня есть таблицы

tb
-----------------------------------------------------------------
id author                  name
1  Максим Кузнецов  Самоучитель MySQL 5 (+ CD-ROM)

как видите не очень приятный вид для поиска и похожих таблиц не мало. Поэтому лучше привести все эти данные к такому виду.

tb_index
-----------------------------------------------------------------
id text
1  максим кузнецов самоучитель mysql 5 cd rom

и так со всеми данными из всех таблиц. Т.е делаем поисковый индекс.
По моему хорошее решение.
Проблема только в том как эти данные форматировать на уровне базы данных.

Неактивен

 

#8 16.10.2010 14:57:05

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Обработка строк регулярными выражениями.

Тогда так, как я сказал. Но у меня ощущение, что Вы пытаетесь оптимизировать
совершенно не узкое место приложения.

Неактивен

 

#9 16.10.2010 15:05:29

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

Re: Обработка строк регулярными выражениями.

Вы пытаетесь оптимизировать совершенно не узкое место приложения.

Ну если вы про форматирование строк на уровне базы данных то это да. Конечно хочется удалить все лишние символы. Но и так не смертельно.

Неактивен

 

#10 16.10.2010 15:15:24

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Обработка строк регулярными выражениями.

Нет, я про создание отдельной таблички для индекса вместо использования
индекса над изначальными табличками.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson