|
|
|
Сортировка по-умолчанию в одной таблице работает, в другой - нет.
|
|||
|---|---|---|---|
|
#18+
Доброй и радостной всем ночи. Бьюсь над одной задачей. Есть вот такая таблица: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. В ней 2,5 млн. записей. Во всех запросах к этой таблице я использую только один вид сортировки: по полю records_likes desc . Чтобы лишний раз не напрягать систему, я решил сделать: " ALTER TABLE `records` ORDER BY `records_likes` ". При простом запросе вида " SELECT * FROM `records` " всё красиво отсортировано по ` records_likes `. records_idrecords_artists_idrecords_artists_namerecords_likes5229986327424PSY68058415285085256796Gotye17065784825739256796Gotye1706352 Дальше я добавляю условие: Код: plaintext 1. 2. 3. 4. Сортировка по-умолчанию не работает. Всё отсортировано по records_id : records_idrecords_artists_idrecords_artists_namerecords_likes2673247335Madonna4902674247335Madonna1082675247335Madonna4922676247335Madonna345 А с таким вот запросом всё отсортировано по records_likes asc : Код: plaintext 1. 2. 3. records_idrecords_artists_idrecords_artists_namerecords_likes4708707866658LMFAO10019164948708866658LMFAO10019315411631866658LMFAO1001985454232327460004Adele1088679 Ок. Ладно бы оно просто не работало и можно было бы забыть про эту возможность. Но, я решил создать отдельную маленькую таблицу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. В ней сортировка по-умолчанию РАБОТАЕТ! Что я с ней только ни делал. И индексы удалял, и добавлял, и добавлял вразброс, и менял значения, и с праймери и без, и с автоинкрементом, и без. Всё равно работает. Если бы ни она, забросил бы уже затею. Но ведь вижу, что работает. А эта сортировка по-умолчанию здорово бы мне облегчила нагрузку на БД. Может, я какой-то принцип упускаю. Кто знает и может подсказать? Спасибо. Всем удачи и множества чудес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2013, 03:08:07 |
|
||
|
Сортировка по-умолчанию в одной таблице работает, в другой - нет.
|
|||
|---|---|---|---|
|
#18+
упускаешь тот факт, что для маленькой таблицы индекс не используеться - мускл понимает что фулскан лучше :) а мыслил верно...что на порядок сортировки влияет использованый индекс... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2013, 03:26:33 |
|
||
|
Сортировка по-умолчанию в одной таблице работает, в другой - нет.
|
|||
|---|---|---|---|
|
#18+
alex564657498765453упускаешь тот факт, что для маленькой таблицы индекс не используеться - мускл понимает что фулскан лучше :) Похоже, что таки использует индекс: Код: plaintext 1. 2. 3. idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra1SIMPLE1testrefnamename92const5Using where alex564657498765453а мыслил верно...что на порядок сортировки влияет использованый индекс... Что ты имеешь в виду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2013, 03:51:40 |
|
||
|
Сортировка по-умолчанию в одной таблице работает, в другой - нет.
|
|||
|---|---|---|---|
|
#18+
По-моему естественное расположение записей в таблице не является сортировкой. Это оптимизация которая постепенно разрушается и в рабочем порядке ремонтируется процедурами. Применительно к данному полю это вообще нонсенс. Наберет никому ранее не известный певун миллион лайков и опять алтертабле? Кроме того сортировка рекордсета сама по себе. Тут я не понимаю логики процесса. Если вы отгружаете юзеру записи тоннами, то, надо полагать там есть ява-скрипт, который на стороне клиента, у которого тачка на 1 процент используется и ей можно делать что хочешь, в том числе сортировать миллион записей. Если отгружаете килограммами, то откуда берется нагрузка на сервер когда он сортирует 30 записей в таблице. Или я тупой? Кстати, как описано в рефе выражения в IN сами сортируются до того как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2013, 08:22:40 |
|
||
|
Сортировка по-умолчанию в одной таблице работает, в другой - нет.
|
|||
|---|---|---|---|
|
#18+
Всегда верил что индексация это забота сервера и полагаюсь на его разум. Разумеется не отрицаю возможностей, но, индексировать имеет смысл что-то более-менее вечное. Скажем описать где находится madonna - на букву m строка 1029283, затем на а, и так далее - имеет смысл, но индексировать лайки - забивать моск серверу в трусы. Это же оперативная информация, сводка с поля боя. Я лайкнул мадоне - добавил последнюю каплю и 2.5 миллиона записей начали переливать индексы из пустого в порожнее. Ну, или типа того. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2013, 08:37:56 |
|
||
|
Сортировка по-умолчанию в одной таблице работает, в другой - нет.
|
|||
|---|---|---|---|
|
#18+
Понятие "сортировка по умолчанию" - не существует! Есть order by (для MySQL его роль также играет group by) - есть и сортировка. Нет - записи возвращаются в произвольном порядке (на однотабличном запросе обычно, но не всегда, в порядке следования согласно первичному, а при его отсутствии - кластерному, индексу, на многотабличном вообще непредсказуемо). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2013, 09:10:40 |
|
||
|
Сортировка по-умолчанию в одной таблице работает, в другой - нет.
|
|||
|---|---|---|---|
|
#18+
Akina, Привод как и человек сперва заглянет в оглавление поля, если таковое фигурирует в запросе. Следовательно последовательность коррелирует с индексацией, но не определяется ей, конечно. Кроме того сама сортировка устроена не так, как мы иногда ожидаем. Например http://stackoverflow.com/questions/12097368/mysql-order-by-string-with-numbers Я на ADO сталкивался с такой задачей, не помню уже как-то решилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2013, 09:25:54 |
|
||
|
Сортировка по-умолчанию в одной таблице работает, в другой - нет.
|
|||
|---|---|---|---|
|
#18+
deblogger , извини, но в мировом масштабе это можно квалифицировать одним лишь образом - хрень собачья. Или сортировка есть, или её нет. А когда сортировка "должна бы быть, но, извините, без гарантий" - следует говорить честно, что её нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2013, 09:30:15 |
|
||
|
Сортировка по-умолчанию в одной таблице работает, в другой - нет.
|
|||
|---|---|---|---|
|
#18+
Akina, Я же привел типовой пример - сортировка есть, но ее одновременно нет. Элементарная аксиоматика. Что вы подразумеваете сортировано, то может быть хаотичным и наоборот. Еще могут быть коллизии с текстом. Например буквы с умляутами в латинской части кодировки идут после Z. Таким образом Über будет стоять после Zap ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2013, 09:50:11 |
|
||
|
Сортировка по-умолчанию в одной таблице работает, в другой - нет.
|
|||
|---|---|---|---|
|
#18+
debloggerЯ же привел типовой пример - сортировка есть, но ее одновременно нет. В примере сортировки - нет. debloggerЧто вы подразумеваете сортировано, то может быть хаотичным и наоборот. Если есть order by, и совокупность ключей сортировки гарантированно обеспечивает уникальность - сортировка есть. Если уникальность не обеспечена - есть только сортировка уровня группы, но не записей внутри группы уникальных значений ключей сортировки. И я лично подразумеваю именно это. debloggerмогут быть коллизии с текстом. Например буквы с умляутами в латинской части кодировки идут после Z. Таким образом Über будет стоять после Zap Это не коллизии. Это всего лишь необходимость выбрать правильный collation (либо, если стандартные не устраивают - создать свой). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2013, 10:37:50 |
|
||
|
Сортировка по-умолчанию в одной таблице работает, в другой - нет.
|
|||
|---|---|---|---|
|
#18+
Создал индексы все, потом "ALTER TABLE ORDER BY". Сейчас таблица по-умолчанию на сложных запросах выдает результаты в нужном мне порядке без order by. Если делать точно такой же с order by, то запрос занимает 5 секунд. Без - 0,05. Чудеса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2013, 15:03:13 |
|
||
|
Сортировка по-умолчанию в одной таблице работает, в другой - нет.
|
|||
|---|---|---|---|
|
#18+
Аладдин, скажите, у вас бывают ситуации когда вы точно знаете что 2+2=4, вы это говорите человеку, а он не слышит? Пожалуйста, прочитайте еше и еше раз: авторБез ORDER BY вам порядок НЕ (буква "Н" а потом буква "Е") предоставляется. Иногда это происходит случайно, но завтра это не произойдет. Ве не выполните задание. Вы сделаете плохой код. Прочитали? отлично, значит вы поняли, что если вам нужен определенный порядок всегда, его надо задать в явном виде к каждом СКЛ-е. Если он получается медленым, то решайти эту проблему -- индексы, планы, подгонка... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2013, 04:01:45 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38302648&tid=1836502]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
73ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 337ms |

| 0 / 0 |
