Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Есть табулечка, и в ней более 7 000 000 записей.
Годами накапливалось. Теперь уж ничего не поделаешь.
Но как бы ее оптимизировать.
Данные из нее беруться демоном в другую таблицу.
Но до жути долго идет выборка по интервалам дат.
На 4 результата 3-7 минут.
Что-то хоть сделать можно чтобы быстрее было или пусть хряпает так?
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
DeepVarvar пишет:
Но до жути долго идет выборка по интервалам дат.
Индекс есть по полю? По explain'у используется?
----- PostgreSQL DBA
EuGen
Отправлено: 27 Сентября, 2011 - 14:30:22
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
0. Определить интервал дат, актуальных для выборки. Все, что более раннее - отправить в архивную таблицу и в случае запросов к ним объединять ее с той, в которой останутся остальные. Например, за последний месяц
1. Дискретизировать дату - например, хранить отдельно год, месяц, день - и создать индексы в соответствии с тем, как идет выборка. Не поможет, если нужны точные данные (до секунды скажем), но поможет, если требуется агрегация помесячно, по дням и т.п.
2. Применить OPTIMIZE если у Вас InnoDB
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
MrBeard
Отправлено: 27 Сентября, 2011 - 14:31:26
Гость
Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2011
Помог: 2 раз(а)
с грустью посмотрел на свою архивную таблицу с 1.700.000.000 строк и подумал - мне бы ваши проблемы
без структуры и explain трудно о чём то говорить) и без запроса непосредственного (Добавление)
ещё по запросам интервала дат, видел как то статью про оптимизацию between - http://habrahabr[dot]ru/blogs/mysql/125467/
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
EuGen пишет:
Определить интервал дат, актуальных для выборки
Все..
Мелкий пишет:
Индекс есть по полю?
По всем нужным есть..
Мелкий пишет:
explain
Нет, одна таблица, выборка только по условию (id) и периоду в 30 дней, не важно сколько их в месяце. Период может "засекать" и "полумесяцы".
Выборка начинается с даты за которую было большее кол-во "событий".
MrBeard пишет:
свою архивную таблицу
Моя не архивная.
---
Сначала джойнил - но ждать по 40 мин результата не интересно.
Индексы были изначально.
Сейчас так:
Один запрос выбирает три самых "событийных" даты для одного "исполнителя":
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.