AdventureWorks2019 数据库查询:
SELECT * FROM HumanResources.Department D INNER JOIN HumanResources.EmployeeDepartmentHistory E ON D.DepartmentID = E.DepartmentID
问题:为什么以下查询没有返回任何数据。我期待它为我的上述测试查询返回至少一行。我可能在这里遗漏或误解了什么?
select
query_text_id,
query_sql_text as query_sql_text
from sys.query_store_query_text where query_sql_text like '%SELECT * FROM HumanResources.Department D INNER JOIN HumanResources.EmployeeDepartmentHistory E ON D.DepartmentID = E.DepartmentID%'
使用默认配置打开查询存储。
1.查询存储未开启
你可以查
sys.databases
DMV。2.Query Store是只读的
在相关数据库的上下文中运行以下查询。
actual_state_desc
应该是READ_WRITE和readonly_reason = 0
3. Query Store 很好,但是查询没有通过阈值
QS的默认
Query_Capture_Mode
值为Auto。我在博客上详细介绍了查询存储默认值。简而言之,查询必须至少匹配这些条件之一才能保存。全部在 24 小时内(默认)。
您可以将捕获模式更改为ALL或匹配上述条件。
4. Query Store 没问题,查询通过了阈值,但是过滤器错误
您尝试查找的查询文本中可能存在拼写错误。或不匹配的空格。或者您会找到刚刚用于查找查询的查询。尝试搜索最小但不同的值。
另一种选择是从估计的或实际的计划中获取查询哈希(这里是另一篇博客文章的指南),然后通过确切的查询哈希搜索查询存储。
例子: