Нужно ли создать индекс по полю...

  • Автор темы CrazyHacKeRs
  • Дата начала

CrazyHacKeRs

Guest
Нужно ли создать индекс по полю...

Просвятите пжл по каким полям нужно насоздавть индексов для ускорения выборок. И стоит ли создать по полю, участвоющему в агрегатных функциях таких как max, min и тд
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Re: Нужно ли создать индекс по полю...

Автор оригинала: CrazyHacKeRs
Просвятите пжл по каким полям нужно насоздавть индексов для ускорения выборок.
по тем, по которым ищешь, и по тем, по которым объединяешь --- то бишь по внешним ключам.
И стоит ли создать по полю, участвоющему в агрегатных функциях таких как max, min и тд
стоит. и стоит переписать запросы с min/max в виде
Код:
select ... from ... order by ... [desc] limit 1;
 

CrazyHacKeRs

Guest
Помимо max, min - у меня еще AVG - имеется. Насчет первых понял...

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

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: CrazyHacKeRs
Объединяю я в основном по ключу, который primary. Стоит ли по этому полю тогда создавать дополнительный индекс?
по primary у тебя уже есть индекс, а вот по внешим ключам, к-рые на него ссылаются --- надо.
 

Strannik

Новичок
Re: Re: Нужно ли создать индекс по полю...

Автор оригинала: Sad Spirit
по тем, по которым ищешь, и по тем, по которым объединяешь --- то бишь по внешним ключам.

стоит. и стоит переписать запросы с min/max в виде
Код:
select ... from ... order by ... [desc] limit 1;
А как переписать если запрос такого вида:
Код:
select a,max(b) from t group by a
:confused:
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Re: Re: Re: Нужно ли создать индекс по полю...

Автор оригинала: Strannik
А как переписать если запрос такого вида:
Код:
select a,max(b) from t group by a
:confused:
А вот этот переписывать не стоит, быстрее вряд ли работать будет.
 

trigger

Guest
Re: Re: Нужно ли создать индекс по полю...

Автор оригинала: Sad Spirit
и стоит переписать запросы с min/max в виде
Код:
select ... from ... order by ... [desc] limit 1;
Я еще плохо секу в PostgreSQL, но неужели все так запущено? Цитата из мануала по MySQL:
Индексы используются для того, чтобы:
Найти величины MAX() или MIN() для заданного индексированного столбца.


Кстати ман этот очень смешной.
Особенно статья 1.11.2 Сравнение MySQL c PostgreSQL :rolleyes:
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Re: Re: Re: Нужно ли создать индекс по полю...

Автор оригинала: trigger
Я еще плохо секу в PostgreSQL, но неужели все так запущено? Цитата из мануала по MySQL:
Индексы используются для того, чтобы:
Найти величины MAX() или MIN() для заданного индексированного столбца.
Угу, проблема в следующем: в Postgres'е ты можешь создать свою агрегатную функцию, которая должна будет вообще говоря просматривать все записи. min() и max() с точки зрения сервера от неё ничем не отличаются, потому тоже просматирвают все записи... А разработчикам всё время не до оптимизации min() и max().

Кстати ман этот очень смешной.
Особенно статья 1.11.2 Сравнение MySQL c PostgreSQL :rolleyes:
Что меня всегда удивляло, у пользователей MySQL эти опусы смеха не вызывают. :rolleyes:
 

trigger

Guest
Re: Re: Re: Re: Нужно ли создать индекс по полю...

Автор оригинала: Sad Spirit
А разработчикам всё время не до оптимизации min() и max().
Да уж... Так вроде как любой желающий может написать что-то для pg? Чтобы min() и max() смотрели
только на индексы... Точно все мхом поросло, если это так... :(
Что меня всегда удивляло, у пользователей MySQL эти опусы смеха не вызывают. :rolleyes:
Хоть это и оффтопик, но это очень похоже на ситуацию в СМИ нашей республики: в 2005г / 5-ой версии мы выйдем на 5%-ое(!!!!!!) повышение развития малого бизнеса/сделаем супер-уникальные штуки -- триггеры(!!!!!!). Хотя у других это было уже давным-давно... :rolleyes:
Это я к примеру привел, а так совпадений много.
 
Сверху