Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Здраствуйте уважаемые знатоки MySQL. подскажите пожалуйста/
У меня есть 30 таблиц кол-во записей варьируется от 500 до 150000 записей.
Запрос я осуществляю с помощью UNION ALL ко всем таблицам. Время запроса порой достигает 5-15 секунд.
Уменьшится ли время запроса если все записи поместить в одну таблицу
общ кол-во записей - 625,617
Неактивен
Зависит от запроса и используемых индексов. Если Вы выбираете
все данные, то не уменьшится (ну или уменьшится пренебрежимо
мало).
Неактивен
А сколько вообще может содержать в себе одна таблица записей. Ограничения существуют???
Просто таблицы постоянно заполняются.
Неактивен
Зависит от типа хранилища (например, для InnoDB больше, чем для MyISAM). + Ограничения может наложить операционная или файловая системы.
Для MyISAM максимальное колво строк 2^32.
Неактивен
Скажите может я что то неправильно делаю.
В данных таблицах я в основном выполняют поиск с помощью след конструкции
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)
Неактивен
Приведенное вами условие тоже самое, что и A.name LIKE '%word%'
Неактивен
Учтите, что LIKE не использует индекс
Неактивен
vasya написал:
Приведенное вами условие тоже самое, что и A.name LIKE '%word%'
Почему тоже самое мне нужно отдельно найти слово. А по вашему алгоритму будет искать даже одно-коренные слова. (Вхождение в слово) А мне их ненадо
Отредактированно VICTOR_81 (18.01.2010 12:12:10)
Неактивен
Сделайте таблички MyISAM и используйте полнотекстовый индекс. Это самое быстрое
и правильное решение. Ну или прикрутите sphinx.
Неактивен
paulus
Вот вам спасибо. Реально намного быстрее. Что то я про полнотесктовый индекс и забыл совсем.
СПАСИБО
Неактивен
Страниц: 1