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

wadim 12.03.2018 13:23

Мусол - установить индекс по убыванию
 
Приветствую всех! Устанавливаем индекс на столбец в мусол. При чтении столбца имеем: 1,2,3
То есть по возрастанию. Как установить индекс чтобы было по убыванию и так что бы это не влияло на производительность. Сейчас я индекс устанавливаю через phpMyAdmin вручную, подскажите код как это делать на php и код проверки установлен ли индекс. Проверку выполнял - но мой код ни чего не вывел.

ksa 12.03.2018 13:24

Цитата:

Сообщение от wadim
подскажите код как это делать на php

И Общие вопросы Javascript, нипанятна... :blink:

laimas 12.03.2018 14:01

Цитата:

Сообщение от wadim
Устанавливаем индекс на столбец в мусол

А что такое мусол?

Nexus 12.03.2018 14:02

laimas, MySQL, вероятно.

laimas 12.03.2018 14:05

Nexus,
ну это судя по упоминанию об индексе, но блин, это как же надо думать, чтобы SQL прочесть как COЛ, и MY, как МУ :).

laimas 12.03.2018 14:10

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

ksa 12.03.2018 15:09

Цитата:

Сообщение от Nexus
MySQL, вероятно

Так его вроде "мускул" называют... :D

Nexus 12.03.2018 15:18

ksa, я думал [май_с_кью_эль], а не "мускул" )

ksa 13.03.2018 08:50

Цитата:

Сообщение от Nexus
я думал [май_с_кью_эль]

Это типа не рульно... :D То ли дело МУСКУЛ!

laimas 13.03.2018 09:04

ksa,
для него еще короче кликуха есть - Скул. )

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:13.