首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >相同的执行计划?

相同的执行计划?
EN

Stack Overflow用户
提问于 2015-08-16 10:06:51
回答 1查看 39关注 0票数 2

我正在学习成为一名数据库管理员,在这样做的同时,我想学习更多关于优化查询的知识。大多数我都能弄明白,但我想知道为什么这两个查询有相同的执行计划,甚至用两种不同的方式编写。它们是基于adventureworks2012lt数据库的。

代码语言:javascript
运行
复制
select productnumber, name, listprice 
from saleslt.product
where productnumber like 'bk-[a-q,s-z]%' and productnumber like '%-[0-9][0-9]'


SELECT ProductNumber, Name, ListPrice
FROM SalesLT.Product 
WHERE ProductNumber LIKE 'BK-[^R]%-[0-9][0-9]';

我还不能上传照片,因为我的名气还不够高:

EN

回答 1

Stack Overflow用户

发布于 2015-08-16 11:05:27

假设您正在手动浏览产品目录,查找指定模式的product Number。产品不会按任何顺序排序。除了浏览所有的产品并逐个匹配之外,你还有什么选择?您在ProductNumber上没有索引。SQL Server别无选择,只能执行表扫描以查找匹配的行。

但是,如果向ProductNumber添加索引,会发生什么情况呢?无论如何,结果都是一样的。以%开头的模式不能使用索引。因此,您的第一个查询将跳转到索引中以BK开头的范围。你的第二个查询也是如此。

新人痴迷于让事情变得更有效率。随着时间的推移,您将学会把事情留给SQL Server处理。你应该只在事情变成问题的时候才去担心。唯一的例外是游标。如果您考虑使用游标来解决问题,那么90%的时间都是错误的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32031202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档