powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
10 сообщений из 10, страница 1 из 1
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
    #38471664
Noob2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток.
Подскажите пожалуйста, имеет ли смысл создавать индекс поля в следующем случае:

Запрос к MySQL
Код: sql
1.
SELECT g, h, j, k, l FROM t ORDER BY a DESC, b DESC, c DESC LIMIT 10;



Читал здесь:
http://www.mysql.ru/docs/man/ORDER_BY_optimisation.html

Понял, что если сортировка происходит по нескольким индексам, то индексы не учитываются.

Но может быть есть смысл проиндексировать одно из полей? (Хочется поле c, так как его значения в записях будут увеличиваться быстрее чем a и b. )
...
Рейтинг: 0 / 0
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
    #38471676
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что мешает создать индекс (a,b,c) ?
...
Рейтинг: 0 / 0
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
    #38471683
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Noob2014Но может быть есть смысл проиндексировать одно из полей? (Хочется поле c, так как его значения в записях будут увеличиваться быстрее чем a и b. )Возможно, сработает индекс по полю a. Но вот индекс по полю c точно не сработает, т.к. это поле не идет первым в ORDER BY.
...
Рейтинг: 0 / 0
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
    #38471772
Noob2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо. Попробую индекс (a,b,c).
...
Рейтинг: 0 / 0
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
    #38471799
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Noob2014,

Я бы сказал, что индексация для ORDER BY -- это вообще очень сомнительная вещь.
Для случая твоего запроса она может сработать -- там нет WHERE.
Но в реальности запросов без WHERE не бывает, и индексы используются прежде всего для оптимизации выборки по SARG-ам.
...
Рейтинг: 0 / 0
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
    #38472211
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у тебя из этой таблицы всегда данные достаются отсортированными по a DESC, b DESC, c DESC , то ты можешь в свойствах самой таблицы указать что сортировать по этим полям. Например:
Код: sql
1.
ALTER TABLE `t` ORDER BY a DESC, b DESC, c DESC;


и теперь уже обычный запрос:
Код: sql
1.
SELECT g, h, j, k, l FROM t LIMIT 10;

будет выдавать тебе отсортированную в нужном порядке таблицу.
...
Рейтинг: 0 / 0
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
    #38472226
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyЕсли у тебя из этой таблицы всегда данные достаются отсортированными по a DESC, b DESC, c DESC , то ты можешь в свойствах самой таблицы указать что сортировать по этим полям. Например:
Код: sql
1.
ALTER TABLE `t` ORDER BY a DESC, b DESC, c DESC;



и теперь уже обычный запрос:
Код: sql
1.
SELECT g, h, j, k, l FROM t LIMIT 10;


будет выдавать тебе отсортированную в нужном порядке таблицу.С такой массой оговорок, что не вижу смысла связываться.
Например:
1) Только для MyISAM.
2) Первый же JOIN может испортить всю картину.
...
Рейтинг: 0 / 0
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
    #38473730
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftПервый же JOIN может испортить всю картину.
Ключевое слово - "может"? Смотря какой JOIN. Как в прочем и в любой другой таблице отсортированной по автоинкрименту...
Всё на самом деле зависит от задачи. Может создатель темы просто хочет увидеть 10 последних посетителей?

miksoftТолько для MyISAM.
А мне за всю жизнь не приходилось использовать что-то другое.
Хотя я конечно допускаю что есть задачи в которых необходимы транзакции.
Но в целом innoDB куда проблематичней, с кучей ограничений, да ещё и медленней.

miksoftС такой массой оговорок, что не вижу смысла связываться
А может напишите об этом разработчикам? Дескать прошу исключить данный функционал из следующих версий, ибо то что вы сделали работает с массой оговорок, и я не вижу в этом смысла.
...
Рейтинг: 0 / 0
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
    #38473744
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyи теперь уже обычный запрос:
Код: sql
1.
SELECT g, h, j, k, l FROM t LIMIT 10;

будет выдавать тебе отсортированную в нужном порядке таблицу.
Вот именно сюда нужно скопировать это ключевое слово "может", и заменить им слово "будет".
...
Рейтинг: 0 / 0
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
    #38473747
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyА может напишите об этом разработчикам? Дескать прошу исключить данный функционал из следующих версий, ибо то что вы сделали работает с массой оговорок, и я не вижу в этом смысла.
А какой функционал, а? что данные в таблице будут физически расположены в указанном сортироввкой порядке - вот это и есть весь функционал. А вот то, что они будут отдаваться сервером в этом порядке, если не указать сортировку - это не заложенный функционал и не следствие из него, а обычные досужие вымыслы, пусть оно зачастую и наблюдается на практике.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]