powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Использование составного индекса
14 сообщений из 14, страница 1 из 1
Использование составного индекса
    #39602814
assmsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Таблица A

Содержит
id bigint,
data int,
summa money

В ней создан составной индекс
CREATE CLUSTERED INDEX [ix_id_data] ON A ([data] ASC,[id] ASC)

Индекс не используется когда дата не строго равна:
Select a.* from A a
inner join B b on a.id = b.id and a.data >= b.data

Когда
Select a.* from A a
inner join B b on a.id = b.id and a.data = b.data
все работает прекрасно используя индекс, но нужно получить именно результат 1го запроса.


Как заставить использовать индекс, не меняя индексы в таблице А?
...
Рейтинг: 0 / 0
Использование составного индекса
    #39602822
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assmskИндекс не используется А что же используется тогда?
assmskКак заставить использовать индекс, не меняя индексы в таблице А? Заставить можно, но не факт, что результат вам понравится.
...
Рейтинг: 0 / 0
Использование составного индекса
    #39602823
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assmsk,

не использется потому, что подхватывает какой-то другой?
...
Рейтинг: 0 / 0
Использование составного индекса
    #39602870
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assmskВ ней создан составной индексА какие ещё индексы имеются?
...
Рейтинг: 0 / 0
Использование составного индекса
    #39602905
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assmskКак заставить использовать индекс, не меняя индексы в таблице А?Что вы подразумеваете под "использовать"? Если Clustered Index Seek, то при таком индексе и запросе вы его не получите.
...
Рейтинг: 0 / 0
Использование составного индекса
    #39602912
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При условии неравенства даты индекс не используется для второго поля - id.
Вы это имели в виду?
...
Рейтинг: 0 / 0
Использование составного индекса
    #39602959
assmsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там единственный индекс описанный выше.



В общем сделал через лютое извращение,
Создал таблицу 'C' с датами от минимальной даты в таблице B до сегодня.
Заджойнил ее с таблицой B по условию c.data >= b.data

И уже таблицу B в которой есть все даты джойню с таблицей А по id = id data = data
Время выполнения устраивает , 7 минут против часа.
Но хотелось бы конечно поизящней как то
...
Рейтинг: 0 / 0
Использование составного индекса
    #39602982
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, with ( forceseek ) должно хватить, можно еще и индекс прибить кластерный хинтом.
...
Рейтинг: 0 / 0
Использование составного индекса
    #39603011
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assmsk,

вы на вопрос "что используется вместо кластерного" так и не ответили.
сильно сомневаюсь, что сервер при наличии такого индекса на том запросе, что вы показали
выбирает сканирование таблицы.

покажите план запроса
Код: sql
1.
2.
3.
4.
5.
SET SHOWPLAN_XML ON;  
  
<Ваш запрос>  
  
SET SHOWPLAN_XML OFF;
...
Рейтинг: 0 / 0
Использование составного индекса
    #39603018
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дедушка,

авторсильно сомневаюсь, что сервер при наличии такого индекса на том запросе, что вы показали
а с чего ему не выбирать скан?
...
Рейтинг: 0 / 0
Использование составного индекса
    #39603092
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assmsk,

дык надо
Код: sql
1.
CREATE CLUSTERED INDEX [ix_id_data] ON A ([id] ASC, [data] ASC)
...
Рейтинг: 0 / 0
Использование составного индекса
    #39603095
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовassmsk,

дык надо
Код: sql
1.
CREATE CLUSTERED INDEX [ix_id_data] ON A ([id] ASC, [data] ASC)



авторКак заставить использовать индекс, не меняя индексы в таблице А?
...
Рейтинг: 0 / 0
Использование составного индекса
    #39603113
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

таки да, но чудес ведь не бывает.
...
Рейтинг: 0 / 0
Использование составного индекса
    #39605144
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assmskНо хотелось бы конечно поизящней как то
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Select a.* 
from A a
where EXISTS
(
	SELECT *
	FROM B b 
	WHERE a.id = b.id and a.data >= b.data 
)

?
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Использование составного индекса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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