![]() |
|
Модераторы: skyboy |
![]()
|
|
| admsasha |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
есть таблица reports, структура примерно такая
id int(11) | date int(11) | login varchar(50) | money double(10,2)| В ней 9 млн записей, нужно узнать какая была последняя сумма у конкретного login до определенного времени т.е. делаю так
Всё работает, но с добавлением записей всё дольше и дольше отрабатывает. Как можно оптимизировать запрос ? explain говорит
Пробывал создавать индекс login+date, эффекту не дало. Mysql: 5.1.34, тип базы MyISAM Что можно придумать ? |
||||
|
|||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Не вижу отбора КОНКРЕТНОГО логина - в выборку тащутся все.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| admsasha |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Неправильно поставил задачу. Нужно как раз все )
login1 - summa1 login2 - summa2 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Классическая задача выбора последней записи в группе...
http://www.sql.ru/forum/actualthread.aspx?tid=687908 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| admsasha |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Akina, Никак не получается. Точнее получается, если бы поле date было уникально. Оно может быть одинаково, а нужно вывести именно последнюю строчку (ориентируясь по id). Прошу подсказать запрос.
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
А какая разница, max(date) или max(id)???
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| admsasha |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Дата может быть одинакова до секунды, ID нет. Или я не понял вопроса ? А в выборке, я не пойму в чем разница, может в индексах... Не могу сообразить Добавлено через 14 минут и 24 секунды Т.е. если я пишу так, то запрос выполняется за 0.45 секунд....
|
|||
|
||||
| admsasha |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
В качестве эксперемента создал вот такой индекс
ALTER TABLE `reports` ADD INDEX `login_date1_id` (`login`, `date1`,`id`); Время обработки сократилось на 5 секунд.... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |