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

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

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

Вы не зашли.

#1 15.01.2010 11:40:10

VICTOR_81
Участник
Зарегистрирован: 15.01.2010
Сообщений: 5

Что лучше? Одна таблица с многими записями, или несколько таблиц.

Здраствуйте уважаемые знатоки MySQL. подскажите пожалуйста/
У меня есть 30 таблиц кол-во записей варьируется от 500 до 150000 записей.
Запрос я осуществляю с помощью UNION ALL ко всем таблицам. Время запроса порой достигает 5-15 секунд.
Уменьшится ли время запроса если все записи поместить в одну таблицу

общ кол-во записей - 625,617

Неактивен

 

#2 15.01.2010 14:18:20

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

Re: Что лучше? Одна таблица с многими записями, или несколько таблиц.

Зависит от запроса и используемых индексов. Если Вы выбираете
все данные, то не уменьшится (ну или уменьшится пренебрежимо
мало).

Неактивен

 

#3 15.01.2010 15:35:50

VICTOR_81
Участник
Зарегистрирован: 15.01.2010
Сообщений: 5

Re: Что лучше? Одна таблица с многими записями, или несколько таблиц.

А сколько вообще может содержать в себе одна таблица записей. Ограничения существуют???
Просто таблицы постоянно заполняются.

Неактивен

 

#4 15.01.2010 16:26:58

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Что лучше? Одна таблица с многими записями, или несколько таблиц.

Зависит от типа хранилища (например, для InnoDB больше, чем для MyISAM). + Ограничения может наложить операционная или файловая системы.
Для MyISAM максимальное колво строк 2^32.

Неактивен

 

#5 15.01.2010 16:42:52

VICTOR_81
Участник
Зарегистрирован: 15.01.2010
Сообщений: 5

Re: Что лучше? Одна таблица с многими записями, или несколько таблиц.

Скажите может я что то неправильно делаю.
В данных таблицах я в основном выполняют поиск с помощью след конструкции

A.name LIKE '% word' or
A.name LIKE 'word %' or
A.name LIKE '% word %'

Вообще поиск правильно организован??
поле name varchar 254 индексное.
Существует ли более оптимальный вариант реализации поиска???

Отредактированно VICTOR_81 (15.01.2010 16:43:29)

Неактивен

 

#6 15.01.2010 16:54:27

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Что лучше? Одна таблица с многими записями, или несколько таблиц.

Приведенное вами условие тоже самое, что и A.name LIKE '%word%'

Неактивен

 

#7 15.01.2010 18:54:36

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Что лучше? Одна таблица с многими записями, или несколько таблиц.

Учтите, что LIKE не использует индекс

Неактивен

 

#8 18.01.2010 12:11:33

VICTOR_81
Участник
Зарегистрирован: 15.01.2010
Сообщений: 5

Re: Что лучше? Одна таблица с многими записями, или несколько таблиц.

vasya написал:

Приведенное вами условие тоже самое, что и A.name LIKE '%word%'

Почему тоже самое мне нужно отдельно найти слово. А по вашему алгоритму будет искать даже одно-коренные слова. (Вхождение в слово) А мне их ненадо

Отредактированно VICTOR_81 (18.01.2010 12:12:10)

Неактивен

 

#9 18.01.2010 13:27:02

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

Re: Что лучше? Одна таблица с многими записями, или несколько таблиц.

Сделайте таблички MyISAM и используйте полнотекстовый индекс. Это самое быстрое
и правильное решение. Ну или прикрутите sphinx.

Неактивен

 

#10 18.01.2010 13:53:33

VICTOR_81
Участник
Зарегистрирован: 15.01.2010
Сообщений: 5

Re: Что лучше? Одна таблица с многими записями, или несколько таблиц.

paulus
Вот вам спасибо. Реально намного быстрее. Что то я про полнотесктовый индекс и забыл совсем.
СПАСИБО

Неактивен

 

Board footer

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