Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
AlanDenton, Возможно, Вам нужно распилить таблицу для нормализации и вместо неё создать представление или набор представлений. Изобилие разношерстных индексов как раз говорит о денормализованном хранении данных. Соответственно, доработать процедуры. Хорошим кодом, как известно, плохую архитектуру не исправить. Сиквел к этому особенно чувствителен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:35 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
TaPaKMinamoto, авторКстати, способ таки есть, не добавляя хинты везде, но с понятными ограничениями в виде второй копии этой таблицы: ещё раз, затраты на материализацию таблицы будут даже больше чем ребилд индекса после DISABLE Еще раз, я не предлагаю решение, я пытаюсь предложить варианты "на подумать". Понятно, что накладные расходы не стоят того, скорее всего, особенно с учетом наличия еще доп. индексов, которые тоже необходимо будет продублировать. Да и увеличение затрат на запись никто не отменял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:37 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, база недавно зашла. Формально нужно за неделю две порешать проблемы с размером. Часть вещей вроде неиспользуемых таблиц / индексов - уже готова. А вот тут затык. И нельзя симитировать на DEV нагрузку с PROD сервера. Потому и такие вот попытки найти безболезненный способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:40 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
AlanDenton, а если просто изучить статистику использования индекса и по соотношению чтений/записей решить - нужен ли он или можно и без него обойтись? сервер же не от "нечего делать" эту статистику считает.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 18:42 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
AlanDenton, у меня не получилось найти другого решения, кроме как произвести нормализацию в такой ситуации. Со временем производительность деградирует и количество взаимоблокировок превышает терпение пользователей :) Но это трудоёмкая задача. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 19:01 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
AlanDenton, В качестве идеи: - сделать представление select * from Таблица with (index = 0) - из dm_exec_query_stats, анализируя планы, определить процедуру и инструкцию в ней - заменить в найденной процедуре таблицу на представление ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2018, 21:31 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
Непонятен подход. Если вы хотите это сделать на рабочей базе, то крайне не советую такие эксперименты. Если не тестовой, то какие проблемы с перфомансом могут быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2018, 05:46 |
|
||
|
Как временно попросить оптимизатор не использовать тот или иной индекс?
|
|||
|---|---|---|---|
|
#18+
SomewhereSomehowБыло бы полезно иметь такую функциональность, но в MSSQL ее нет. Документированных хинтов, типа ораклового NO_INDEX() в сиквеле нет, как и недокументированных такого плана. Другие недокументированные возможности влияния на оптимизатор, типа флагов трассировки или правил преобразования, влияют на запрос в целом, но не на конкретный объект (индекс/таблица). Информация о конкретном объекте хранится в метаданных этого объекта в системных таблицах. В тестовых условиях, ради интереса, можно было бы найти конкретные биты и поиграть с метаданными индекса, например, сделав его фильтрованным с таким фильтром из-за которого оптимизатор не сможет его использовать или гипотетическим или еще что-то. Но это ведет к модификации таблиц, т.е. переводу сервера в монопольный режим, что недопустимо в реальности, и главное к возможной и вероятной порче базы данных, что совсем не допустимо. На мой взгляд, лучше использовать штатные средства и, либо отключать индекс, либо подменять объект. МС в делает некоторые шаги к централизованному управлению подсказками оптимизатору, может быть эта задача и станет когда-то решаться нормально, но пока таких средств нет. Тему можно закрывать. Всем искренне признателен спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2018, 11:00 |
|
||
|
|

start [/forum/topic.php?fid=46&startmsg=39607471&tid=1690213]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 354ms |

| 0 / 0 |
