SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 19.01.2011 12:20:21

slavanau
Участник
Зарегистрирован: 19.01.2011
Сообщений: 4

Организация индексной таблицы

Доброго времени суток, учусь работать с php + mysql, и получил задание: Создай 2 таблицы Mysql. Первая (id,title,text) - это таблица с контентом. Заполни 3-4 позиции любыми данными
Вторая таблица будет индексной. Ее предназначение - организация поиска. Я хочу чтобы ты:
1) создал структуру индексной таблицы
2) использовал ее для поиска в контенте. Т.е. тебе надо написать скрипт поиска, можешь использовать любой метод - match или like, главное чтобы поиск   не затрагивал основную таблицу контента, а все делал через индексную. Почитай и разберись что это такое, зачем это нужно и как такое можно реализовать. Но так и не понял как создается структура этой таблицы, и для чего она нужна. Помогите пожалуйста!

Неактивен

 

#2 19.01.2011 14:57:11

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

Re: Организация индексной таблицы

Кто-то очень добрый Вам дал такое задание. Я бы просто добавил полнотекстовый
индекс на основную таблицу sad

Идея индексной таблицы состоит в том, чтобы быстро искать данные в разных таб-
лицах. В случае с одной таблицей смысла в этом немного, но можете попробовать,
например, такую штуку:

CREATE TABLE index_table (data TEXT NOT NULL, id INT NOT NULL, FULLTEXT(data));
INERT INTO index_table SELECT title, id FROM data_table;
INERT INTO index_table SELECT text, id FROM data_table;
SELECT id FROM index_table WHERE MATCH ('привет') AGAINST (data);

Но, кажется, это страшный никому не нужный костыль. Подозреваю, что ответ
«страшный никому не нужный костыль в данном случае» — это призовое очко
при сдаче зачета wink

Неактивен

 

#3 19.01.2011 16:15:05

slavanau
Участник
Зарегистрирован: 19.01.2011
Сообщений: 4

Re: Организация индексной таблицы

Смысл в том, что я только учусь и он дал мне это задание чтобы я в этом розобрался, дале на практике таблиц будет много. А можете прокоментировать что где делаеться в вашем скрипте, потому как в php я хоть немного разобрался, а в sql не очень.

Неактивен

 

#4 19.01.2011 16:33:42

slavanau
Участник
Зарегистрирован: 19.01.2011
Сообщений: 4

Re: Организация индексной таблицы

Интересуют такие вопросы : что делает inert,  даные в индексную таблицу заносятся один только раз или при каждом запросе, как получить результат с поиска, для многиг таблиц скрипт такой же, только с добавлением полей или иной?

Отредактированно slavanau (19.01.2011 16:37:08)

Неактивен

 

#5 19.01.2011 17:01:24

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

Re: Организация индексной таблицы

Книжку по СУБД почитайте, это всё равно будет нужно.

В данном примере добавление одноразовое, но в реальной жизни нужно, конечно,
поддерживать индексную таблицу актуальной. По сути — это денормализация,
а любую денормализацию нужно поддерживать.

В примере запросы, соответственно, создать таблицу, добавить данные (две строки),
поискать.

Неактивен

 

#6 19.01.2011 18:48:48

slavanau
Участник
Зарегистрирован: 19.01.2011
Сообщений: 4

Re: Организация индексной таблицы

Ну, хоть убейте не пойму за щет чего прирост скорости? Ведь даные переносятся с одной таблицы в иную, после чего вытягиваются так же как  из первой. Да, и вы вроде бы вместо INSERT написали INERT, и попутали местами значение в match и against.

Отредактированно slavanau (19.01.2011 21:23:23)

Неактивен

 

#7 22.01.2011 22:23:57

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

Re: Организация индексной таблицы

В данном примере не будет никакого прироста скорости. Будет наоборот замедление.
Вообще смысла в индексных таблицах очень немного smile

В качестве разумного исключения — использование разных хранилищ для таблиц.
Например, хранение основных данных в InnoDB, а данных, по которым нужно произ-
вести поиск — в MyISAM (для того, чтобы можно было использовать полнотекстовый
индекс). Или даже sphinx как такой хитрый способ организации индексной таблицы.

В MATCH действительно мог ошибиться, дело же не в синтаксисе, правда? wink

Кстати, надо понимать, что в других СУБД есть отдельные понятия индексной таблицы
(например, в Oracle) — это таблицы, которые состоят только из индекса. Но для Вашей
задачи этот термин не подходит.

Неактивен

 

Board footer

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