powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / index hints on view
53 сообщений из 53, показаны все 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
index hints on view
    #39793277
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanTaPaKkapelan,

пропущено...

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

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


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

я Вас уже 4 раза в доку носом тыкал, изучайте пожалуйста самостоятельно.
По существу , есть рекомендации?
например как у Владислав Колосов
...
Рейтинг: 0 / 0
index hints on view
    #39793300
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Будете сраться -- придет лесник и всех разгонит.
...
Рейтинг: 0 / 0
index hints on view
    #39793302
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanПравильнее модифицировать проблемный запрос.Проблемный запрос можно можно модифицировать _не только_ хинтами.
...
Рейтинг: 0 / 0
index hints on view
    #39793303
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanTaPaKпропущено...

ну так узнайте для чего нужен и применяется NOEXPAND

я Вас уже 4 раза в доку носом тыкал, изучайте пожалуйста самостоятельно.
По существу , есть рекомендации?
например как у Владислав Колосов
По существу: не любителю новых врат, ясно что пробросить какой-то индекс внутрь представления нельзя ввиду того что engine не знает к какому объекту применять ваш чудо хинт. Но вы можете и дальше фантазировать на предмет нового синтаксиса от Владислава, пробуйте добавить хинт "pogaluysta"
...
Рейтинг: 0 / 0
index hints on view
    #39793304
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовВот кабы синтаксис был бы with (index (table1.ix1)), но тогда это был бы дедушка, а не бабушка.А теперь представим, что table1 во всех представлениях упоминается более одного раза, а хинт приляпать надо в одном месте.
...
Рейтинг: 0 / 0
index hints on view
    #39793306
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичkapelanПравильнее модифицировать проблемный запрос.Проблемный запрос можно можно модифицировать _не только_ хинтами.
ткните носом пожалуйста - тестовый код в первом посте
Исходные данные:
на таблице в 100000000000 записей куча индексов
оптимизатор пользует индекс по своему усмотрению
Задача
заставить оптимизатор выбрать нужный индекс
...
Рейтинг: 0 / 0
index hints on view
    #39793312
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanГавриленко Сергей Алексеевичпропущено...
Проблемный запрос можно можно модифицировать _не только_ хинтами.
ткните носом пожалуйста - тестовый код в первом посте
Исходные данные:
на таблице в 100000000000 записей куча индексов
оптимизатор пользует индекс по своему усмотрению
Задача
заставить оптимизатор выбрать нужный индекс

По какому хотите индексу:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select
    *
from   view1 a with ( forceseek )
where
    exists (
        SELECT 
            *
        FROM  view1 x with ( forceseek )
        WHERE 
            x.i=1
            and a.v = x.v
)
...
Рейтинг: 0 / 0
index hints on view
    #39793314
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanЗадача
заставить оптимизатор выбрать нужный индексЭто не задача, это придуманое вами решение проблемы "запрос тормозит, потому что оптимизатор выбирает не тот индекс". Задача, наверное, чтобы выбрать данные за разумное время, не?
...
Рейтинг: 0 / 0
index hints on view
    #39793315
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,
к сожалению на первом шаге все-равно пользуется индех1.
Представим себе табицу employee , таблице пол и год рождения.
В запросе есть фильтр по полу и году рождения.
Оптимизатор выбирает индекс по полу
Задача выкинуть из мыслей этот индекс.
Собственно пока у меня одна идея - убить этот индекс. другого решения не вижу.
В этом случае прийдется копать весь остальной код на предмет кто-еще может пользовать индекс по полу.
...
Рейтинг: 0 / 0
index hints on view
    #39793319
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelan Представим себе табицу employee , таблице пол и год рождения.
В запросе есть фильтр по полу и году рождения.
Оптимизатор выбирает индекс по полу

Да хоть так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select
    *
from   view1 a with ( forceseek )
where
    a.i = 3
    and a.v between 'sys' and 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

select
    *
from   view1 a with ( forceseek )
where
    a.i = 3
    and reverse(reverse(a.v)) between 'sys' and 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'



Или через промежуточную таблицу с последовательным применением сначала более селективного условия, а потом доп фильтрацией.
...
Рейтинг: 0 / 0
index hints on view
    #39793321
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,
все равно лезет на индех1
...
Рейтинг: 0 / 0
index hints on view
    #39793322
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,
промежуточную таблицу - да возможное решение.
но ... как-бы большой кровью достигается
...
Рейтинг: 0 / 0
index hints on view
    #39793341
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanпромежуточную таблицу - да возможное решение.
но ... как-бы большой кровью достигаетсяЧто делать, если заточили всю архитектуру на вьюхи...
...
Рейтинг: 0 / 0
index hints on view
    #39793347
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,
угу :(
когда-то встречал "программиста" который всякий раз создавал вью если в джойне более 3-х таблиц
...
Рейтинг: 0 / 0
index hints on view
    #39793362
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanalexeyvg,
угу :(
когда-то встречал "программиста" который всякий раз создавал вью если в джойне более 3-х таблиц
Так не делал, но норм. Возьму "на карандашик".
По существу: а что мешает решить через WITH CTE (с минимизацией либо объёма первичной выборки либо затрат на первичную выборку)?
...
Рейтинг: 0 / 0
index hints on view
    #39793373
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanГавриленко Сергей Алексеевич,
все равно лезет на индех1У меня лезет в разные. Но вы скрытный, да.
...
Рейтинг: 0 / 0
index hints on view
    #39793379
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKkapelanShakill,
потомушта оптимизатор обязан выполнять хинты если они валидные.
вы наверное не знаете, но sql декларативный язык и тут никто никому не обязан

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

вы наверное не знаете, но sql декларативный язык и тут никто никому не обязан

А шо, императивный бы достал i оттуда, хде ее нету?
Попробуй на таблице, удивишься
...
Рейтинг: 0 / 0
index hints on view
    #39793726
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_kapelanalexeyvg,
угу :(
когда-то встречал "программиста" который всякий раз создавал вью если в джойне более 3-х таблиц
Так не делал, но норм. Возьму "на карандашик".
По существу: а что мешает решить через WITH CTE (с минимизацией либо объёма первичной выборки либо затрат на первичную выборку)?
CTE не всегда работает так как думается.
Это оракл делает то что в доке написано, как видим MSSQL спокойно плюет на свою доку.
Оракл обязан выполнить то что в скобках а затем внешний запрос и всегда делает так ... как и всегда следует хинтам.
MSSQL оптимизатор не факт что выполнит СТЕ а потом пойдет дальше - там свои мозги, так-же с хинтами в СТЕ не все так просто.
временные таблицы работают гораздо понятнее - они тупо ограничивают оптимизатор одним запросом.
Гавриленко Сергей Алексеевич сразу предложил решение с ними.
...
Рейтинг: 0 / 0
index hints on view
    #39793784
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хинта не использовать в запросе индекс нет. Есть отключение индекса но это не то. Вариант только переписывать запрос заведомо передавая ему инфу через например временную таблицу всего того что вы считаете селективным условием. Алексей Гавриленко уже этот вариант предложил. Других вариантов нет.
...
Рейтинг: 0 / 0
index hints on view
    #39793859
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanОракл обязан выполнить то что в скобках а затем внешний запрос и всегда делает такЕсли в скобках запрос, а снаружи условия, то он реально считает в память всё содержимое таблиц, а потом уже наложит условия? Это же жесть.
Значит, CTE в Оракле и в MSSQL принципиально разные.
kapelanMSSQL оптимизатор не факт что выполнит СТЕ а потом пойдет дальшеНе то, что "не факт", а он гарантированно так не сделает.
В MSSQL СТЕ - это просто альтернитивная форма записи подзапроса.
Оракл вообще какой то странный, игнорирует функциональную сущность SQL начисто :-)
...
Рейтинг: 0 / 0
index hints on view
    #39793873
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

1. Если в скобках запрос, а снаружи условия, то он реально считает в память всё содержимое таблиц, а потом уже наложит условия?
- нет не жесть это так должно быть. Пример: 6+(2*3)= 12; (6+2)*3 = 18;
В зависимости какой результат мне нужен - там скобки и ставлю. у оптимизатора выбора быть не должно - так как хуман приказал.
Не нравится запросы в скобках? - не пишите так

2. Значит, CTE в Оракле и в MSSQL принципиально разные.
- разные как видим
В MSSQL СТЕ - это просто альтернитивная форма записи подзапроса
- true

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

по моим наблюдениям в Оракле SQL - это синтаксически сахар над процедурным PL ядром. Т.е. там SQL открыт и программист может в план встраивать всякую лабуду своего кода. Поэтому там эффективно работают курсоры. Они не эмулируются, но являются частью кода выполнения плана запроса. Но такая ненативность рождает другие проблемы, например, сложное описание типов или сложности в выводе датасетов клиенту из процедур.
...
Рейтинг: 0 / 0
index hints on view
    #39794017
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelan1. Если в скобках запрос, а снаружи условия, то он реально считает в память всё содержимое таблиц, а потом уже наложит условия?
- нет не жесть это так должно быть. Пример: 6+(2*3)= 12; (6+2)*3 = 18;Нет-нет, результат-то должен быть одинаковый, это само собой.

Но вот в следующем примере результат для сиквела и оракла будет одинаковый, но в оракле, получается, так писать нельзя, нужно явно задать способ получения результата, а не "формулу":
Код: sql
1.
2.
3.
4.
5.
with C
(
    select * from myTable
)
select id from C where id = 123


kapelan3. Оракл вообще какой то странный, игнорирует функциональную сущность SQL начисто :-)
- нет он действует строго по директиве, а хуман сказал делать то что скобках в первую очередь значит так тому и быть.- Он не функциональный!
- Нет, да!

Это обычно называют "императивный", а не "директивный".

Я не считаю это недостатком Оракла (может, он даже лучше как СУБД), просто надо понимать, что он совсем другой, это не просто другой язык, и другое администрирование, а совсем другие принципы. С Кобола или Джавы несравнимо легче перейти на Оракл, чем на MSSQL.
Я знал про всякие "триггеры на строку", массовое использование курсоров и т.д., но не представлял, что в CTE может быть такое.
...
Рейтинг: 0 / 0
index hints on view
    #39795439
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,
почему нельзя?
все можно писать, синтаксис собственно одинаковый.
Разница в плане выполнения или в оптимизаторе:
- в оракле он работает так как указано в доке, а именно: следовать хинтам если они валидные, скобки являются такой-же директивой как и хинт
- в майкрософте - оптимизатор иногда работает так как ему хочется
...
Рейтинг: 0 / 0
index hints on view
    #39795440
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,
в оракле курсоры это основа любого запроса. Работает просто как топор: я хочу выбрать 1000 строк из таблицы.
движок тупо достает записи с диска по одной, прервать можно в любой момент.
в микрософте я не понимаю почему курсоры так тормозят - логика в принципе должна быть такая-же. Видимо движок лочит все строки и возвращает все в память а уже с памяти возвращает на клиента.
...
Рейтинг: 0 / 0
index hints on view
    #39795464
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форум "сравнение субд" тут за углом. Охота обсудить различие MSSQL и оракл -- велкам туда.
...
Рейтинг: 0 / 0
53 сообщений из 53, показаны все 3 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / index hints on view
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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