Dmitry Voroshin wrote:
Насчёт уникальности. А если это уникальный индекс? Тогда получается
сортировка бесмыссленна?
Только если это PK-индекс. Иначе вмешаются нуллы.
--
Дмитрий Еманов
"Dmitry Yemanov" <[EMAIL PROTECTED]>
сообщил/сообщила в новостях следующее: news:[EMAIL PROTECTED]
sasha wrote:
Потому что это бессмысленно.
Объясни пожалуйста.
Исключение одно -- если индекс по первым полям хорошо кластеризован, но у
нас нет соответствующей статистики. Зато если инде
P.S. Провёл эксперимент - все данные в кэше :-):-):-):-)
У нас на реальном сервере обычно так и есть.
С полным фетчем?
Вот дома эксперимент провёл:
CREATE TABLE "Test" (
"Id"INTEGER NOT NULL,
"Name" VARCHAR(1000) NOT NULL
);
ALTER TABLE "Test" ADD CONSTRAINT "PK_Test" PRIMARY KEY ("Id");
CREATE INDEX "Test_IDX1" ON "Test" COMPUTED BY (CAST(SUBSTRING("Name"
FROM 1 FOR 50) AS VA
Спасибо за объяснение. Хоть буду знать...
С полным фетчем?
Я просто этот запрос собственноручно не запускал, но товарищ, который
запускал, вроде всё время двойную стрелочку в эксперте нажимал. Так что
99% что с полным фетчем. Там чуть больше 10 тыс записей всего (много
текстовых полей).
sasha wrote:
Это меня вобще в тупик загнало. Почему плохо? У меня ведь запрос по
индексу сортирует почти в 5 раз быстрее...
С полным фетчем?
--
Дмитрий Еманов
sasha wrote:
Потому что это бессмысленно.
Объясни пожалуйста.
Потому что только индексом воспользоваться не удастся. Придется сочетать
чтение на основе индекса с буферной сортировкой для каждой группы. Т.е.
удваивать кол-во операций по сравнению с любым из ORDER/SORT отдельно.
Ключевая
Я уже сказал - индекс для сортировки это плохо
Это меня вобще в тупик загнало. Почему плохо? У меня ведь запрос по
индексу сортирует почти в 5 раз быстрее...
Потому что это бессмысленно.
Объясни пожалуйста.
sasha wrote:
Подскажите пожалуйста почему сервер не может использовать индекс для
сортировки если сортировка идёт по нескольким полям и то поле, по
которому есть индекс, указано в списке ORDER BY первым?
Потому что это бессмысленно.
--
Дмитрий Еманов
"sasha" ...
Вопрос был об эффективности сортировки по ID + Name и по Name
Я вобще изначально спрашивал как заюзать индекс если сортировка по нескольким
полям.
Не надо его юзать
Ты уверен, что тебе нужен ORDER через INDEX, а не ORDER через SORT ???
Мне безразлично как - лишь-б
Вопрос был об эффективности сортировки по ID + Name и по Name
Я вобще изначально спрашивал как заюзать индекс если сортировка по
нескольким полям.
Ты уверен, что тебе нужен ORDER через INDEX, а не ORDER через SORT ???
Мне безразлично как - лишь-бы быстрее...
А в "кое что ещё" небось опять куча варчаров, раздувающих сортировку
на сотни мег ?
Да дело не в том что там после, а в том что индекс не используется.
И к стати у нас вместо Name индекс по выражению на самом деле, так что
составный индекс не прокатывает.
SELECT *
FROM "Users"
ORDER BY
"sasha" ...
А в "кое что ещё" небось опять куча варчаров, раздувающих сортировку
на сотни мег ?
Да дело не в том что там после, а в том что индекс не используется.
Вопрос был об эффективности сортировки по ID + Name и по Name
И к стати у нас вместо Name индекс по выражению на самом
А почему ты решил, что сортировка по ID + Name будет хуже, чем
сортировка по Name ? ORDER BY INDEX хорош только для выбора первых
нескольких записей, для большого объёма выборки это очень плохо.
У нас реальный запрос с сортировкой только по Name работает ~2.3
секунды, а запрос с сортировко
"sasha" ...
А почему ты решил, что сортировка по ID + Name будет хуже, чем
сортировка по Name ? ORDER BY INDEX хорош только для выбора первых
нескольких записей, для большого объёма выборки это очень плохо.
У нас реальный запрос с сортировкой только по Name работает ~2.3 секунды, а запрос
надо как-то объяснить серверу, за какую щеку он должен положить записи,
отфетченные по ID, чтобы потом посортировать их по NAME
Ясное дело, но как?
берешь армянского коньяку и глинтвейна, садишься перед сервером и начинаешь
уговаривать
не поможет - скажи, что будешь пинать ногами.
--
Булы
"sasha" ...
надо как-то объяснить серверу, за какую щеку он должен положить записи,
отфетченные по ID, чтобы потом посортировать их по NAME
Ясное дело, но как?
Никак.
А почему ты решил, что сортировка по ID + Name будет хуже, чем
сортировка по Name ? ORDER BY INDEX хорош только для
надо как-то объяснить серверу, за какую щеку он должен положить записи,
отфетченные по ID, чтобы потом посортировать их по NAME
Ясное дело, но как?
SELECT *
FROM "Test"
PLAN ("Test" ORDER "PK_Test")
ORDER BY "Id", "Name"
Как бы это сделать?
надо как-то объяснить серверу, за какую щеку он должен положить записи,
отфетченные по ID, чтобы потом посортировать их по NAME
--
Булычев Алексей
http://www.stella-npf.ru
sasha wrote:
Привет!
Сабж: и вправду.
--
Regards. Ded.
Привет!
Подскажите пожалуйста почему сервер не может использовать индекс для
сортировки если сортировка идёт по нескольким полям и то поле, по
которому есть индекс, указано в списке ORDER BY первым?
А также как заставить сервер использовать нужный мне план, например у
меня есть запрос:
S
23 matches
Mail list logo