
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
13.11.2013, 01:35:03
|
|||
|---|---|---|---|
|
|||
order by по полям из разных таблиц |
|||
|
#18+
Есть табличка юзеров (~20k) и табличка со статистикой по юзерам (1-1) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Запросик выводит ТОП юзеров по рейтингу Код: sql 1. 2. 3. 4. 5. По эксплейну запрос пробегает по всем строкам. Код: sql 1. 2. 3. 4. 5. 6. Возможно ли оптимизировать этот запрос без денормализации данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.11.2013, 05:52:29
|
|||
|---|---|---|---|
order by по полям из разных таблиц |
|||
|
#18+
Вообще я бы не стал утверждать, чтоmiZerattiПо эксплейну запрос пробегает по всем строкам.Судя по тому, что используется индекс {"вал","ид"}, запрос выполняется примерно так: читается таблица "стат"(в порядке индекса), к каждой полученной записи сразу джойнятся соотв.записи из "юзер", и как только таких результирующих записей записей наберётся 20, чтение таблиц прекратится. 20460 - это просто наихудший возможный вариант, сервер ведь не знает, что у вас там 1-1, он подстраховывается на случай, если не всем "стат"ам соответствуют "юзер"ы. PS. Но если очень хочется красивогомалоциферного эксплейна , то можно так: Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.11.2013, 23:13:54
|
|||
|---|---|---|---|
|
|||
order by по полям из разных таблиц |
|||
|
#18+
tanglir, к сожалению, это будет работать неправильно, если в отсортированом по val списке записи с 15 по 30 будут иметь одинаковое значение val ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.11.2013, 05:23:47
|
|||
|---|---|---|---|
order by по полям из разных таблиц |
|||
|
#18+
miZerattiэто будет работать неправильнокак именно "неправильно"? объясните, в чём будет заключаться разница между "правильным" и "неправильным" результатами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.11.2013, 00:19:23
|
|||
|---|---|---|---|
|
|||
order by по полям из разных таблиц |
|||
|
#18+
tanglirmiZerattiэто будет работать неправильнокак именно "неправильно"? объясните, в чём будет заключаться разница между "правильным" и "неправильным" результатами? для упрощения возьмем исходную таблицу из 6 строк и запрос с "limit 3": Код: sql 1. 2. 3. 4. 5. 6. 7. 8. (имена повторяются для наглядности сортировки) По вашему алгоритму выберутся строки: Код: sql 1. 2. 3. 4. 5. а нужно: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.11.2013, 05:48:37
|
|||
|---|---|---|---|
order by по полям из разных таблиц |
|||
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. в "s" выберутся 1,2,3 в запросе, соответственно, выберется именно то, что вы описали как "нужное" с чего вы взяли, что val=3 будет соответствовать "какая-то", а не первая по name запись? на "внешний" ордербай внимательно посмотрите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.11.2013, 05:50:18
|
|||
|---|---|---|---|
order by по полям из разных таблиц |
|||
|
#18+
А, нет, понял. Да, есть такое :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.11.2013, 03:51:47
|
|||
|---|---|---|---|
order by по полям из разных таблиц |
|||
|
#18+
В мане оптимизации сортировки посвящена обширная статья http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html Пишут что ваш случай подпадает под файлсорт неизбежно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1835708]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
50ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 302ms |

| 0 / 0 |
