imp
Новичок
оптимизация выборки из таблиц
Доброе время суток!
Есть две таблицы:
`message`
_________________________
| id | text | load_date | id_reg |
`region`
______________
| id_reg | name |
В таблице `message` порядка 2 млн. записей, в `region` 13 записей.
Запрос:
SELECT r.name, COUNT(m.*) FROM region r, message m WHERE (m.id_reg=r.id_reg) AND m.load_date BETWEEN 'xxxx-xx-xx' AND 'xxxx-xx-xx' GROUP BY r.name;
Результат запроса : `название региона` - `количество записей`; и таких соответственно 13 записей.
Записи в `message` c 2002 года по 2010. Обратиться пользователь может в любой участок диапазона одинаково часто.
Результат выдается быстро если записи в начале таблицы. Чем дальше, тем хуже, в конце совсем не дождаться результата.
первичные ключи стоят на первых полях таблиц, индекс на `message`.id_reg.
Посоветуйте как сделать, чтобы результат выдавался в приемлемое время для пользователя. Может вообще как то запрос переделать?
Доброе время суток!
Есть две таблицы:
`message`
_________________________
| id | text | load_date | id_reg |
`region`
______________
| id_reg | name |
В таблице `message` порядка 2 млн. записей, в `region` 13 записей.
Запрос:
SELECT r.name, COUNT(m.*) FROM region r, message m WHERE (m.id_reg=r.id_reg) AND m.load_date BETWEEN 'xxxx-xx-xx' AND 'xxxx-xx-xx' GROUP BY r.name;
Результат запроса : `название региона` - `количество записей`; и таких соответственно 13 записей.
Записи в `message` c 2002 года по 2010. Обратиться пользователь может в любой участок диапазона одинаково часто.
Результат выдается быстро если записи в начале таблицы. Чем дальше, тем хуже, в конце совсем не дождаться результата.
первичные ключи стоят на первых полях таблиц, индекс на `message`.id_reg.
Посоветуйте как сделать, чтобы результат выдавался в приемлемое время для пользователя. Может вообще как то запрос переделать?