Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
Есть 2 таблицы: Resources(ресурсы, на тестовой БД ~12 000 записей, в боевой ~ 30M) и ResourceExtParams (дополнительные параметры, пока практически пустая) Есть задача по добавлению/изменению дополнительных параметров ресурсов с определенным значением поля Resources.HashCode - хранимого вычисляемого поля (добавил только что) Код: sql 1. с построенным индексом Код: sql 1. 2. 3. 4. 5. 6. Индекс включает поле Id, т.к. кластерный индекс построен по другому полю. Была создана нехитрая хранимка Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Обратил внимание, что при вызове Код: sql 1. который должен изменить 4 записи в ResourceExtParams и 1 добавить, вместо поиска по IX_HashCode идет сканирование кластерного индекса Resources ( план1 в приложении), причем из него кроме Id зачем-то извлекаются все составляющие поля HashCode, но не оно само. Попробовал добавить подсказку Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Выдал сообщение об ошибке Код: sql 1. Что удивительно, т.к запуск Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. прекрасно отрабатывает с желанным планом ( план с подсказками в приложении) Версия сервера Код: sql 1. 2. 3. 4. 1. Почему не работают подсказки в ХП? 2. Почему такой странный план без них(надо бы попробовать перестроить кластерный индекс CIX_PositionId)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2016, 11:41 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
2. Перестроение CIX_PositionId ничего не измменило ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2016, 12:01 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
Шамиль Фаридович, хинт может не работать в силу особенностей настройки базы, вида индекса. Т.е. если индекс принципиально не может быть использован, получим такую ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2016, 12:13 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
Хинт выдает ошибку только при использовании его внутри ХП, если запустить запрос с использованием этого хинта то все прекрасно отрабатывает. как показано выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2016, 12:16 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
Шамиль Фаридович, в таком случае SET настройки в консоли отличаются от тех, которые были использованы при создании процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2016, 12:29 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, а какая опция запрещает/разрешает использование хинтов в ХП? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2016, 14:48 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
Описаны некоторые тонкости https://blogs.msdn.microsoft.com/craigfr/2009/04/28/implied-predicates-and-query-hints/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2016, 15:25 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
+ попробуйте переопределить параметр @HashCode внутри процедуры Код: sql 1. и уже в запросе использовать его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2016, 15:28 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
sergeimv, познавательная статейка, но к сожалению sergeimv+ попробуйте переопределить параметр @HashCode внутри процедуры Код: sql 1. и уже в запросе использовать его. не решает моей проблемы - выскакивает все та же ошибка. Видимо, Executor упорно пытается подсчитать значение вычисляемого поле вместо того, чтобы взять его сохраненное значение. И делает он это только при вызове ХП, запущенный в студии запрос отрабатывает без проблем . Что нужно дописать в ХП, чтобы она тоже работала? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 11:24 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
вот тут SQL Server doesn't use index in stored procedure мужик с таким же боролся, ему уйму советов дали, но ничего не помогло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 11:38 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
Шамиль ФаридовичВладислав Колосов, а какая опция запрещает/разрешает использование хинтов в ХП? использование хинтов - никакая. а вот индексы на вычисляемых столбцах могут использоваться только при определенных set-ах. [quot BOL] When you are creating and manipulating indexes on computed columns or indexed views, the SET options ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING, and ANSI_WARNINGS must be set to ON. The option NUMERIC_ROUNDABORT must be set to OFF. [quot] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 12:13 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
o-o, улыбнуло) Правда описанный в топе пример у меня работает, возможно его пофиксили в каком-нить сервис-паке. daw, в точку! у меня при создании ХП было явно прописано Код: sql 1. Даже не знаю зачем. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 12:21 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
Кстати, после проставления опций dawWhen you are creating and manipulating indexes on computed columns or indexed views, the SET options ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING, and ANSI_WARNINGS must be set to ON. The option NUMERIC_ROUNDABORT must be set to OFF. сама собой решилась вторая проблема Шамиль Фаридович2. Почему такой странный план без них То есть теперь без хинтов используется IX_HashCode. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 12:34 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовШамиль Фаридович, хинт может не работать в силу особенностей настройки базы, вида индекса. Т.е. если индекс принципиально не может быть использован, получим такую ошибку .коллеги, подскажите в Оракле - если хинт не применим или не нравится оптимизатору, и фиг с ним, никакая ошибка не валится Есть ли такой режим в MSSQL? Ситуация: есть табличная функция внутри запрос -- несколько таблиц, юнионы, подзапросы, джойны, with, несколько or'ов идет выбор или по диапазону одной даты, или по диапазону другой даты, все это размножается на or'ы других параметров Вынес поиск id в with, добавил inner merge join, работает в разы быстрее Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. так работает нормально и быстро Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Но когда в селект к функции добавляю ограничение по конкретному id where id = @id Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Query processor could not produce a query plan because of the hints defined in this query. Resubmit the query without specifying any hints and without using SET FORCEPLAN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2019, 12:13 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
andreymx, option(recompile) ну, вы понимаете, к чему это ведет с другой стороны, если это несущественно - [skipped]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2019, 21:48 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
Сон Веры Павловныandreymx, option(recompile) ну, вы понимаете, к чему это ведет с другой стороны, если это несущественно - [skipped].спасибо, буду пробовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2019, 10:50 |
|
||
|
Табличные подсказки, вычисляемое поле
|
|||
|---|---|---|---|
|
#18+
andreymxСон Веры Павловныandreymx, option(recompile) ну, вы понимаете, к чему это ведет с другой стороны, если это несущественно - [skipped].спасибо, буду пробоватья так подумал Т.к. это табличная функция Эту опцию придётся вставлять во все её вызова? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2019, 11:20 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=118&tid=1688462]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
32ms |
get forum data: |
3ms |
get page messages: |
88ms |
get tp. blocked users: |
2ms |
| others: | 279ms |
| total: | 464ms |

| 0 / 0 |
