![]() |
|
Модераторы: skyboy |
![]()
|
|
| sergejzr |
|
||||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 1 Всего: 360 |
Чего -то я не врубаюсь..
Есть таблица, в ней индекс на поле day(date) Если пишу так:
База использует индекс и всё пучком. Но на такое:
говорит "Using filesort". Как мне ему обьяснить, что всё уже и так просортировано? В конечном варианте проблема выглядит след. образом, выборка:
Надо чтобы данный запрос использовал ключ... Как лучше сделать ключ и заставить БД делать то, что нам надо? |
||||||
|
|||||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 6 Всего: 401 |
sergejzr, может, есть смысл заменить индекс по day на составной индекс по day + time?
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 1 Всего: 360 |
Пробовал, даже дополнительно по (status,day,time)... не помогает
|
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 6 Всего: 401 |
AFAIK, status в тот же индекс включать точно не нужно, особенно на первом месте... при приведенной выборке он, по идее, вообще использоваться не сможет. sergejzr, а where в запросе вообще нет, выбираются все строки?
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 1 Всего: 360 |
неа, where нет. Просто отсортировать надо..
Вот я в принципе тоже думаю, что статус не нужен. Это я просто уже всё подряд пробую... |
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 7 Всего: 146 |
sergejzr, а что выдает такой запрос?
|
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 1 Всего: 360 |
filesort... Вот ссылка для тестов вход: логин: root без пароля. http://pma.cihar.com/STABLE/sql.php?db=tab...l.php&pos=0 |
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 7 Всего: 146 |
Видимо сортировка по индексу работает только в том случае, когда идет выборка тех же полей того же самого индекса.
Как я понял, именно про это и идет речь, хотя в примерах явно используется *. Добавлено @ 00:49 Немного странно, конечно, но сейчас протестировав, у меня не получилось отсортировать по индексу с выборкой не индексированых или использующих другой индекс полей... Это сообщение отредактировал(а) sTa1kEr - 25.7.2007, 00:49 |
|||
|
||||
| SelenIT |
|
||||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 6 Всего: 401 |
sergejzr, а зачем у поля time тип mediumtext?
В общем, поэкспериментировал... если полю time задать тип TIME (что, имхо, логично;), то запрос
Но ни с MEDIUMTEXT, ни с VARCHAR ничего так и не получилось. Пробовал менять длину индекса (напр., делать его короче данных или в точности равным длине данных), делал по нескольку раз optimize table - ноль эффекта... отправляюсь на поиски истины... -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
||||
|
|||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 1 Всего: 360 |
Честно сказать, даже не знаю где искать того, кто эту таблицу 5 лет назад создал, чтобы спросить Спасибо за расследование! Наверное именно так и надо будет сделать. Просто мне при каждом изменении таблицы надо весь код на 1000*N строк просматривать, чтобы не дай бог чего не сломалось. Система досталась "в наследство"... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |