Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Мусол - установить индекс по убыванию (https://javascript.ru/forum/misc/72993-musol-ustanovit-indeks-po-ubyvaniyu.html)

wadim 13.03.2018 10:59

laimas, речь именно о индексе, с выборкой SELECT все работает, но мне ни это нужно. Мне индекс нужен. Нужно что то вроде этого:
mysqli_query($myConnect, "CREATE INDEX `SredneeTimeStr` ON `апельсины дешевые`(SredneeTimeStr) ORDER BY `SredneeTimeStr` DESC ");

laimas 13.03.2018 12:23

Цитата:

Сообщение от wadim
речь именно о индексе, с выборкой SELECT все работает, но мне ни это нужно. Мне индекс нужен.

А вы знаете для чего существуют индексы? А если знаете, значит должны и понимать, то что вы написали, это сущий бред.

wadim 13.03.2018 16:55

В чем бред? Я еще в первом сообщении точно изложил задачу. Зачем индексы нужны я знаю. Для быстрой выборки и фильтрации(сортировки). Вот у меня при индексе имеется столбец со значениями 1,2,3. Столбец ранее был 1,3,2. После индекса стало 1,2,3. Как мне и нужно. Только одна деталь, мне нужно 3,2,1. И я хочу установить именно индекс так чтобы при чтении (SELECT) всегда получать уже готовый (фильтрованный) столбец: 3,2,1. То есть меня интересует создание индекса с настройкой DESC, что то вроде этого:

mysqli_query($myConnect, "CREATE INDEX `SredneeTimeStr` ON `апельсины дешевые`(SredneeTimeStr) ORDER BY `SredneeTimeStr` DESC ");

Начинает ругаться с этого места: ORDER BY `SredneeTimeStr` DESC

Nexus 13.03.2018 17:02

wadim, индексы создаются не для сортировки, а для более быстрого доступа к необходимым данным.
Закрепить за индексом какой-то порядок выборки не получится.

Есть таблица `table` с 1 полем - `id` и тремя записями: 1,2,3.
Вывести 1,2,3:
SELECT * FROM table ORDER BY id ASC

Вывести 3,2,1:
SELECT * FROM table ORDER BY id DESC

wadim 13.03.2018 17:07

С чего Вы решили что не сортируется? В интернете написано что сортируется, у меня тоже сортируется. Проблема что нужно DESC, а SELECT * FROM table ORDER BY id ASC и я знаю, вот только Вам каждый раз придется выполнять сортировку при каждом запросе SELECT, что так нагрузит сервер, что уши покраснеют.

laimas 13.03.2018 17:11

Цитата:

Сообщение от wadim
Зачем индексы нужны я знаю.

Из того что написано, этого не видно.

laimas 13.03.2018 17:21

wadim,
вы путаете котлеты с мухами, а утверждаете что знаете. Указание порядка индекса нужно указывать для оператора:

CREATE INDEX name (field DESC)

соответственно ASC по умолчанию.

А вы пишете везде создание индекса и попытку его сортировки. Как же вы читаете матчасть то?

Nexus 13.03.2018 17:24

Цитата:

Сообщение от wadim
что так нагрузит сервер, что уши покраснеют

У вас хоть миллион записей в таблице есть, чтобы уши краснели или вы на кофеварке сервер бд развернули?

wadim 14.03.2018 08:59

Не работает, вот полный код, сами проверьте:
mysqli_query($myConnect, "CREATE INDEX `SredneeTimeStr` ON `апельсины дешевые`(SredneeTimeStr DESC) ");

$result= mysqli_query($myConnect, "SELECT `SredneeTimeStr` FROM `апельсины дешевые` ");


while ($arr= mysqli_fetch_assoc($result))
$ar[]= $arr['SredneeTimeStr'];


print_r ($ar);

laimas 14.03.2018 09:46

Цитата:

Сообщение от wadim
Не работает, вот полный код, сами проверьте

Зачем? В документацию нужно заглядывать. :) Порядок DESC индекса в полной мере поддерживается MySQL начиная с версии 8, до этой версии задание его не является ошибкой, просто это будет игнорироваться.

Вы так и не понимаете назначение индексов, считая, что если задать индекс с порядком DESC, то указывать порядок сортировки в запросе ORDER BY field DESC не потребуется.

И при создании индекса указывается имя ключа, а не `апельсины дешевые`.


Часовой пояс GMT +3, время: 09:03.