SQL Server2008 创建索引后如何使用索引?

SQL Server2008 创建索引后如何使用索引?,第1张

唯一索引:唯一索引不允许两行具有相同的索引值
主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的,并且不能为空
• 聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个
• 非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。可以有多个,小于249个

索引类型:再次用汉语字典打比方,希望大家能够明白聚集索引和非聚集索引这两个概念。

当查询的数据量比较大时,创建索引有如下五大主要作用:

通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。可以大大加快数据的检索速度,这也是创建索引的最主要的原因。可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

MYSQL在创建索引后对索引的使用方式分为两种:\x0d\1 由数据库的查询优化器自动判断是否使用索引;\x0d\2 用户可在写SQL语句时强制使用索引\x0d\\x0d\下面就两种索引使用方式进行说明\x0d\第一种,自动使用索引。数据库在收到查询语句后会查看where语句后面的查询条件,同时查看在表上面有哪些索引,然后根据查询条件和索引进行匹配。\x0d\查询条件和索引的匹配包括查询字段与索引字段的匹配和查询类型和索引类型的匹配。前者很好理解,就是查询条件的属性上要建有索引,后者则是说查询条件必须能够使用索引,比如等值判断和范围查询可以使用B+树索引,而hash索引只能适用于等值判断。\x0d\在找到与查询条件匹配的索引后,就是进行代价估计来决定是否使用索引,代价估计主要根据要访问的就数量,一般来说如果通过索引访问的记录数量占全表记录数量15%以上,则不会使用索引而是使用全表扫描,因为此时使用索引的代价更大。在大多数情况下使用索引是会提高效率的。\x0d\经过优化器的判断,最终会决定是否使用索引\x0d\ \x0d\第二种,强制使用索引,主要是通过SQL语句实现的\x0d\select from table force index(PRI) limit 2;(强制使用主键)\x0d\select from table force index(ziduan1_index) limit 2;(强制使用索引"ziduan1_index")\x0d\select from table force index(PRI,ziduan1_index) limit 2;(强制使用索引"PRI和ziduan1_index")\x0d\也可以禁止索引的使用\x0d\select from table ignore index(PRI) limit 2;(禁止使用主键)\x0d\select from table ignore index(ziduan1_index) limit 2;(禁止使用索引"ziduan1_index")\x0d\select from table ignore index(PRI,ziduan1_index) limit 2;(禁止使用索引"PRI,ziduan1_index")

索引不需要你去刻意的使用什么的。。索引是为了提高查询效率建立的。。当你在数据库中存储了较大数量的数据,或者需要频繁的对表进行 *** 作的时候,就可以在需要的字段上加上索引。。这样可以提高 *** 作的效率,节约时间。。

mongodb在前台直接运行建立索引命令的话,将造成整个数据库阻塞,因此索引建议使用 background 的方式建立。但是这也会带来一定的问题,在
26 版本之前,在 secondary server 中即使使用 background 方式建立索引,secondary 还是会以
foreground 方式建立索引,它导致 secondary 同样引发数据库阻塞问题。26 版本修复了这个 Bug,26 版之后使用
background 方式建立索引时,真正转向后台运行了。
为了尽量降低建立索引对 MongoDB Server 的影响,有一种方法是把 MongoDB Server 转换成 standalone 模式后建立。具体做法如下:
1首先把 secondary server 停止,在取消 --replSet 参数,并且更改 MongoDB port 之后重新启动 MongoDB,这时候 MongoDB 将进入 standalone 模式;
2在 standalone 模式下运行命令 ensureIndex 建立索引,建议使用 foreground 方式运行;
3建立索引完毕之后关闭 secondary server 按正常方式启动;
4根据上述 1~3 的步骤轮流为 secondary 建立索引,最后把 primary server 临时转换为 secondary server,同样按 1~3 的方法建立索引,再把其转换为 primary server。
这种方式还是比较麻烦的,但可以把建立索引 *** 作对 MongoDB 的影响降到最低,在有些情况下还是值得做的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12938914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存