2012-02-02 2 views
0

У меня есть таблица MySQL около 1000 миллионов записей. Я делаю запрос очень медленно. Итак, я разделил эту таблицу по ID на 10 подтабликов с тем же structrue.как быстро запрашивать данные после разделения таблицы?

table_1(1-1000000) 

table_2(10000001-2000000) 

table_3(20000001-3000000) 
...... 

Но как я могу быстро запрашивать данные после разбиения таблицы?

, когда я обращаюсь к пользователю следующим образом: select name from table where name='mark', я не знаю, перейдите в какую таблицу для запроса beacuse. Я могу получить диапазон идентификаторов.

+0

путем проверки диапазона. Вы уже пробовали индексы? –

+1

попробуйте Разделение (http://dev.mysql.com/doc/refman/5.1/en/partitioning.html), он делает все. Для того, что вы сделали, вы сначала должны проверить, какую таблицу вам нужно запросить, в зависимости от идентификатора, а затем запустить запрос в этой таблице. Кстати, как предложил «Митч Пшеница», вы пробовали индексы на своем оригинальном столе с 1000 миллионами записей? – Abhay

+0

@Abhay записи увеличивается с каждым днем, поэтому хранить все записи в одной таблице не полезно. Задайте запрос следующим образом: «выберите имя из таблицы, где name =« mark », я не знаю, перейдите в какую таблицу для запроса beacuse. Я могу получить диапазон ID. – koogua

ответ

0

Разделение таблиц таким образом совершенно неверно, когда вы показываете свой пример запроса. На самом деле вы создали больше проблем, чем решение чего-либо.

Давайте вернемся к большому столу:

Шаг 1 это понять, почему это происходит медленно, поэтому после объяснения SQL команды, чтобы получить обзор.

Шаг 2 - это выяснить, можете ли вы улучшить этот запрос. Утверждение таких вещей, как индексы, не может быть хорошим решением. Если да, пожалуйста, укажите измерения, показывающие это.

Шаг 3 должен думать нестандартно. Вы выполняете запросы в очень большой таблице, которая постоянно вставляет. Подумайте об использовании специально разработанного индекса поиска. Например, рассмотрите индексирование с помощью Solr для команд поиска.

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

Смежные вопросы