Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка? / 10 сообщений из 10, страница 1 из 1
20.11.2013, 18:07:29
    #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
20.11.2013, 18:14:59
    #38471676
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
А что мешает создать индекс (a,b,c) ?
...
Рейтинг: 0 / 0
20.11.2013, 18:17:33
    #38471683
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
Noob2014Но может быть есть смысл проиндексировать одно из полей? (Хочется поле c, так как его значения в записях будут увеличиваться быстрее чем a и b. )Возможно, сработает индекс по полю a. Но вот индекс по полю c точно не сработает, т.к. это поле не идет первым в ORDER BY.
...
Рейтинг: 0 / 0
20.11.2013, 18:55:08
    #38471772
Noob2014
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
Большое спасибо. Попробую индекс (a,b,c).
...
Рейтинг: 0 / 0
20.11.2013, 19:10:37
    #38471799
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
Noob2014,

Я бы сказал, что индексация для ORDER BY -- это вообще очень сомнительная вещь.
Для случая твоего запроса она может сработать -- там нет WHERE.
Но в реальности запросов без WHERE не бывает, и индексы используются прежде всего для оптимизации выборки по SARG-ам.
...
Рейтинг: 0 / 0
21.11.2013, 01:48:04
    #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
21.11.2013, 02:22:04
    #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
22.11.2013, 08:07:26
    #38473730
InterSky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имеет ли смысл индексировать одно из полей, по которым выполняется сортировка?
miksoftПервый же JOIN может испортить всю картину.
Ключевое слово - "может"? Смотря какой JOIN. Как в прочем и в любой другой таблице отсортированной по автоинкрименту...
Всё на самом деле зависит от задачи. Может создатель темы просто хочет увидеть 10 последних посетителей?

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

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

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


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