#php #mysql
#php #mysql
Вопрос:
Я столкнулся с дилеммой. Я извлекаю данные из своей таблицы по двум полям:
**field 1**
1979385197241
1235467
95823352353
9089892189735
versus
**field 2**
6
2
7
2
1
Допустим, в таблице около 2000 строк и 40 полей. Будет ли время загрузки значительно отличаться, если я упорядочу его по тому или иному полю?
Я спрашиваю, потому что большие числа являются текущими, а меньшие обновляются cronjob на большие числа. Если бы я упорядочил строки по полю 2, у меня были бы результаты в реальном времени. Нет необходимости в cronjob.
Ответ №1:
Если вы беспокоитесь о производительности сортировки, то самое главное — правильно использовать индексы. Обычно вам следует создать индекс для столбца, который вы хотите использовать в ORDER BY
предложении.
Однако, имея всего 2000 строк в вашей таблице, я предполагаю, что это будет довольно быстро даже без индекса.
Комментарии:
1. Вероятно, индекс — это то, что нужно @domino, если он упорядочивает весь список или выбирает 10 лучших. Индексы бесполезны, если критерии выбора означают, что выбранные строки разбросаны по всему индексу. Просто что-то, что нужно иметь в виду, как новичку в SQL.
explain...
может использоваться, чтобы сообщить вам, что на самом деле использует сервер, если что-то работает не так, как ожидалось.
Ответ №2:
Упорядочение по числам — это операция двоичного сравнения, которая выполняется за одинаковое время для всего, что соответствует целому размеру процессора (обычно 32 бит). В любом случае оба числа, вероятно, сравниваются в одной инструкции процессора (сборка Intel: cmp. Время загрузки регистра и проверки значения не выдерживает …). Только в 32-битной системе с 64-битным числом И с одинаковыми первыми 32 битами обоих чисел потребуется больше времени для сравнения большего числа с меньшим. Все операции сортировки выполняются путем одновременного сравнения двух чисел.
На практике никогда не беспокойтесь о размере числа, которое вы сортируете. 99999999999999999999999999999999999999999999999999999999999999 cmp 1 — столько же времени, сколько 2 cmp 1 — мы сразу знаем, что нам не нужно проверять полную длину первой строки из 9.
Ответ №3:
Лучше всего тестировать оба способа, но я не думаю, что вы понесете какую-либо потерю производительности при любом заказе по полю 2.
Комментарии:
1. -1: поощрение бесполезной избыточной работы путем тестирования обоих способов.