powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / index hints on view
25 сообщений из 53, страница 1 из 3
index hints on view
    #39793156
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть view.
view не индексировано
На таблицах есть куча индексов.
Попытка заставить использовать нужный индех ни к чему не приводит - оптимайзер все-равно пользует тот который ему нравится.
Возможно ли вообще заставить опптимизатор использовать индех на таблице через вью ?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
drop table t1
go
CREATE TABLE t1 (i INT, v VARCHAR(4000)) 
go
CREATE INDEX t1_index1 ON t1(i)
go
CREATE INDEX t1_index2 ON t1(v)
go
CREATE VIEW view1 AS
SELECT * 
FROM t1
go
INSERT INTO t1
select OBJECT_ID,name 
from sys.objects

SELECT *
FROM  view1 WITH (index (t1_index2))
WHERE i=1
...
Рейтинг: 0 / 0
index hints on view
    #39793184
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извини, дарагой. но оптимизатор умнее тебя.

Как он из t1_index2 достанет i?

Код: sql
1.
2.
SELECT v FROM  view1 WITH (index (t1_index2))
WHERE i=1
...
Рейтинг: 0 / 0
index hints on view
    #39793188
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelan, почему вы ищете по i, а при этом считаете что нужный индекс по v?
...
Рейтинг: 0 / 0
index hints on view
    #39793194
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222,
не извиню дарагой.
Реальная задача на много сложнее.
В реальной системе оптимизатор не всегда прав. И в этом случае его нужно заставить идти правильныйм путем.
Приведенный код доказывает что индексы не работают.
ВОПРОС
Возможно ли вообще заставить опптимизатор использовать индех на таблице через вью?
...
Рейтинг: 0 / 0
index hints on view
    #39793196
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanaleks222,
не извиню дарагой.
Реальная задача на много сложнее.
В реальной системе оптимизатор не всегда прав. И в этом случае его нужно заставить идти правильныйм путем.
Приведенный код доказывает что индексы не работают.
ВОПРОС
Возможно ли вообще заставить опптимизатор использовать индех на таблице через вью?

Приведенный говнокод доказывает только квалификацию программизда ниже плинтуса.
...
Рейтинг: 0 / 0
index hints on view
    #39793198
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shakill,
потомушта оптимизатор обязан выполнять хинты если они валидные.
...
Рейтинг: 0 / 0
index hints on view
    #39793203
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanShakill,
потомушта оптимизатор обязан выполнять хинты если они валидные.
вы наверное не знаете, но sql декларативный язык и тут никто никому не обязан
...
Рейтинг: 0 / 0
index hints on view
    #39793207
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanShakill,
потомушта оптимизатор обязан выполнять хинты если они валидные.
ну так и пишите хинт внутри вью, там где имя таблицы
...
Рейтинг: 0 / 0
index hints on view
    #39793210
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKkapelanShakill,
потомушта оптимизатор обязан выполнять хинты если они валидные.
вы наверное не знаете, но sql декларативный язык и тут никто никому не обязан
Вам сюда: https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-query?view=sql-server-2017
"Query hints specify that the indicated hints should be used throughout the query."

По существу идеи есть?
...
Рейтинг: 0 / 0
index hints on view
    #39793216
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanShakill,
потомушта оптимизатор обязан выполнять хинты если они валидные.

С чего Вы решили, что хинт валидный?

Код: sql
1.
2.
3.
4.
5.
create table t1 (f1 int)
create table t2 (f1 int)

create index ix1 on t1 (f1)
create index ix1 on t2 (f1)



Сиквел, найди ix1.
...
Рейтинг: 0 / 0
index hints on view
    #39793217
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanTaPaKпропущено...

вы наверное не знаете, но sql декларативный язык и тут никто никому не обязан
Вам сюда: https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-query?view=sql-server-2017
"Query hints specify that the indicated hints should be used throughout the query."

По существу идеи есть?
по существу: вам в другой язык
...
Рейтинг: 0 / 0
index hints on view
    #39793222
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот кабы синтаксис был бы with (index (table1.ix1)), но тогда это был бы дедушка, а не бабушка.
...
Рейтинг: 0 / 0
index hints on view
    #39793223
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shakill,
вью пользуется сотнями процедур, у каждой своя специфика. Обычно оптимизатор работает правильно.
В одном запросе оптимизатор пользует индекс с очень плохой кардиналити.
Совсем не имеет смысла добавлять хинты во вью так как упадет сотня процедур.
Правильнее модифицировать проблемный запрос.
...
Рейтинг: 0 / 0
index hints on view
    #39793225
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanВам сюда: https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-query?view=sql-server-2017
"Query hints specify that the indicated hints should be used throughout the query."
По существу идеи есть?
по существу вы привели описание поведения query hint, а у вас table hint
...
Рейтинг: 0 / 0
index hints on view
    #39793228
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовВот кабы синтаксис был бы with (index (table1.ix1)), но тогда это был бы дедушка, а не бабушка.

идея хорошая но так не работает
exception: Incorrect syntax near '.'.
...
Рейтинг: 0 / 0
index hints on view
    #39793231
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelan,

не работает, такого нет синтаксиса. Придётся представления править, если хотите. На самом деле Вы получаете с "плохим" индексом наиболее дешевый план, поэтому он и выбирается. Попробуйте пересчитать статистики с фулл сканом, может полегчает.
...
Рейтинг: 0 / 0
index hints on view
    #39793236
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовkapelan,

не работает, такого нет синтаксиса. Придётся представления править, если хотите.

вообще есть такой синтаксис :)
Код: sql
1.
2.
3.
4.
SELECT *
FROM  view1 
WHERE i=1
option ( TABLE HINT (t1, index (t1_index2)))


но получаем ошибку 8723, поскольку в запросе о такой таблице или алиасе ничего неизвестно
...
Рейтинг: 0 / 0
index hints on view
    #39793251
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовkapelan,

не работает, такого нет синтаксиса. Придётся представления править, если хотите. На самом деле Вы получаете с "плохим" индексом наиболее дешевый план, поэтому он и выбирается. Попробуйте пересчитать статистики с фулл сканом, может полегчает.

не факт что пересборка статистики поможет, да и нельзя ее часто делать. Таблицы многомиллионные (более 10 нулей строк)
Сегодня оптимизатор решил так, завтра по другому.
Тут другая задача: наплевать на оптимизатор и сделать так как хочет хуман.
За сим и вопрошаю о помощи
...
Рейтинг: 0 / 0
index hints on view
    #39793253
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanВладислав Колосовkapelan,

не работает, такого нет синтаксиса. Придётся представления править, если хотите. На самом деле Вы получаете с "плохим" индексом наиболее дешевый план, поэтому он и выбирается. Попробуйте пересчитать статистики с фулл сканом, может полегчает.

не факт что пересборка статистики поможет, да и нельзя ее часто делать. Таблицы многомиллионные (более 10 нулей строк)
Сегодня оптимизатор решил так, завтра по другому.
Тут другая задача: наплевать на оптимизатор и сделать так как хочет хуман.
За сим и вопрошаю о помощи
Сильно сомневаюсь, что вы считаете более правильно
...
Рейтинг: 0 / 0
index hints on view
    #39793259
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,
Правильным я считаю делать так как написано в доке: а в доке прописано что хинты должны выполнятся оптимизатором.
Также я в курсе что индексные хинты никогда не работали на вью.
Но почему-то в последней версии они не бросают ехсепшина, отсюда вывод:
- что-то пофиксили и они должны работать коректно
но как показал тест - "в лоб" не работают.
За сим и данный топик: если кто сумел победить эту проблему, хотелось бы знаь как?
...
Рейтинг: 0 / 0
index hints on view
    #39793261
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelan,
где написано ваше мифическое "что хинты должны выполнятся оптимизатором."
https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-2017
...
Рейтинг: 0 / 0
index hints on view
    #39793262
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKkapelan,
где написано ваше мифическое "что хинты должны выполнятся оптимизатором."
https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-2017
в первой строке: Table hints override the default behavior of the query optimizer
в этом собственно и смысл хинтов
...
Рейтинг: 0 / 0
index hints on view
    #39793263
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelan,

авторТакже я в курсе что индексные хинты никогда не работали на вью.

прекрасно работают при наличии NOEXPAND
...
Рейтинг: 0 / 0
index hints on view
    #39793265
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanTaPaKkapelan,
где написано ваше мифическое "что хинты должны выполнятся оптимизатором."
https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-2017
в первой строке: Table hints override the default behavior of the query optimizer
в этом собственно и смысл хинтов
любитель любоваться на новые врата? должны?
...
Рейтинг: 0 / 0
index hints on view
    #39793273
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKkapelan,

авторТакже я в курсе что индексные хинты никогда не работали на вью.

прекрасно работают при наличии NOEXPAND

тестовый код в первом посте, попробуйте NOEXPAND.
Вам рекомендация, прежде чем советовать с уверенностью знатока - почитать доку или протестировать
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 1 из 3
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / index hints on view
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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