加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL索引和性能改进

发布时间:2020-12-12 16:26:05 所属栏目:MsSql教程 来源:网络整理
导读:我对SQL索引以及它们如何提高性能有一些疑问.希望你们能回答他们! :d 创建整个表的索引以及我的表和几列的索引有什么区别?那些只指定了几列的索引会更快吗? 解决方法 您没有指定您正在使用的数据库系统 – 这些类型的东西总是非常特定于供应商. 这是我适
我对SQL索引以及它们如何提高性能有一些疑问.希望你们能回答他们! :d

>创建整个表的索引以及我的表和几列的索引有什么区别?那些只指定了几列的索引会更快吗?

解决方法

您没有指定您正在使用的数据库系统 – 这些类型的东西总是非常特定于供应商.

这是我适用于SQL Server的专有技术:

首先,SQL Server中的索引在其索引条目中最多只能有900个字节.仅这一点就不可能有一个包含所有列的索引.

最重要的是:这样的指数毫无意义.你想要实现什么?

考虑一下:如果你有一个索引(LastName,FirstName,Street,City),那么该索引将不能用于加速查询

>仅限FirstName
>城市
>街

该索引对搜索有用

>(LastName),或
>(LastName,FirstName),Street),City)

但实际上没有别的 – 如果你只搜索街道或只是城市,肯定不会!

索引中列的顺序有很大不同,查询优化器不能只使用索引中间某处的任何列进行查找.

考虑一下你的电话簿:它的订单可能是LastName,也许是Street.那么索引是否可以帮助您找到您所在城市的所有“Joe’s”?所有人都住在“主街”?不 – 您可以先通过LastName查找 – 然后在该组数据中获得更具体的信息.只是对所有内容都有索引并没有帮助加速搜索所有列.

如果您希望能够通过街道搜索 – 您需要在(街道)上添加单独的索引(可能还有另外一列或两列有意义).

如果你想能够通过职业或其他任何东西进行搜索 – 你需要另一个特定的索引.

仅仅是因为你的列存在于索引中并不意味着它会加速对该列的所有搜索!

主要规则是:使用尽可能少的索引 – 对于一个系统来说,太多的索引可能比没有索引更糟糕……建立你的系统,监控它的性能,找到那些成本最高的查询 – 然后优化这些,例如通过添加索引.

不要只是因为你可以盲目索引每一列 – 这是糟糕的系统性能的保证 – 任何索引也需要维护和维护,所以你拥有的索引越多,你的INSERT,UPDATE和DELETE操作就越多(得到因为所有这些指数都需要更新.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读