首页 > 试题广场 >

有关数据库索引,说法正确的是()。

[不定项选择题]
有关数据库索引,说法正确的是()。
  • 1个表只能有一个聚族索引,多个非聚族索引
  • 字符串模糊查询不适合索引
  • 哈希索引有利于查询字段用于大小范围的比较查询
  • 多余的索引字段会降低性能
A D
A  聚簇索引也称为聚集索引,聚类索引,簇集索引,聚簇索引确定表中数据的物理顺序。聚簇索引类似于电话簿,后者按姓氏排列数据。由于聚簇索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚簇索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。

B 如果使用模糊匹配 这等价于全表扫描 此时索引就不起效果了。这里说的是模糊匹配 ,而不是全文索引。何为全文索引?
在大微软的数据库中:
MicroSoft SqlServer 中的全文索引是由一系列存储过程来完成的,这些存储过程按先后顺序罗列如下:
1、启动数据库的全文索引服务存储过程:sp_fulltext_service
2、初始化全文索引存储过程:sp_fulltext_database
3、建立全文索引目录存储过程:sp_fulltext_catalog
4、在全文索引目录中添加删除表标记存储过程:sp_fulltext_table
5、在全文索引目录的表中添加或删除列标记存储过程:sp_fulltext_column
说到底是调用一些列存储过程搞定的而并非模糊查询 。个人这么认为

全文索引和普通索引(唯一索引、聚集、非聚集之类)的区别(从百度知道搞来的,讲的还是有道理的,连接:http://zhidao.baidu.com/question/1818128608088158588.html)
两种索引的功能和结构都是不同的
普通索引的结构主要以B+树和哈希索引为主,用于实现对字段中数据的精确查找,比如查找某个字段值等于给定值的记录,A=10这种查询,因此适合数值型字段和短文本字段
全文索引是用于检索字段中是否包含或不包含指定的关键字,有点像搜索引擎的功能,其内部的索引结构采用的是与搜索引擎相同的倒排索引结构,其原理是对字段中的文本进行分词,然后为每一个出现的单词记录一个索引项,这个索引项中保存了所有出现过该单词的记录的信息,也就是说在索引中找到这个单词后,就知道哪些记录的字段中包含这个单词了。因此适合用大文本字段的查找。

大字段之所以不适合做普通索引,最主要的原因是普通索引对检索条件只能进行精确匹配,而大字段中的文本内容很多,通常也不会在这种字段上执行精确的文本匹配查询,而更多的是基于关键字的全文检索查询,例如你查一篇文章信息,你会只输入一些关键字,而不是把整篇文章输入查询(如果有整篇文章也就不用查询了)。而全文索引正是适合这种查询需求。


C 哈希索引精确查找是比较给力的。
 哈希索引的限制:
a、哈希索引只包含哈希码和行指针,不存储字段值,所以无法用索引中的值来避免去读取行。
b、哈希索引数据并不是按照索引值顺序存储的,所以也就无法用于排序。
c、哈希索引也不支持部分索引列匹配查找,必须利用所有索引列,因为哈希值是通过所有索引列计算的。
d、哈希索引只支持等值比较查询,包括=、in()、<=>(安全比较)比较包含null的时候用。哈希也不支持任何范围查询,比方说where price > 100
e、哈希索引非常快,除非有哈希冲突(不同的索引值会有相同的哈希值),这个时候引擎必须遍历链表中的所有行来匹配。
f、哈希冲突较多的时候,比方列上相同的值比较多的时候,索引维护代价就会比较高。

D 是对 字段太多 查询的时候索引会根据索引立面包含的列进行检测和排序,所以建立索引也要视情况而定。

编辑于 2015-12-01 17:02:22 回复(0)
AD
A 聚集索引会将表的物理存储顺序改变 所以一个表 只有一个聚集索引
B 全文索引可以用于模糊查询
C 哈希索引仅仅能满足 = in <= >的操作,不能用于范围查询
D 是肯定的
编辑于 2015-08-25 16:23:33 回复(2)

当然,让我们用更轻松幽默的方式来解释聚簇索引和非聚簇索引吧!

聚簇索引(Clustered Index)

想象一下你有一堆书,想要快速找到你需要的那一本。如果你按照书名的字母顺序把它们整齐排列在书架上,这就像是创建了一个聚簇索引。当你知道你要找的书名时,你可以直接走到正确的位置,一目了然地找到它。但是,如果突然你想按作者名字来重新排序这些书,那就麻烦了,因为你得搬动所有的书来调整位置——这就像对有聚簇索引的数据进行更新操作一样有点费劲。

非聚簇索引(Non-Clustered Index)

现在,假设你不打算改变书在书架上的物理位置,但你又想更快地找到特定的书。于是,你决定做一个目录,记录每个书名及其所在的具***置。这个目录就是非聚簇索引。当你需要找一本书时,先查目录找到书的位置,然后再去书架上取书。虽然多了一步查找过程,但至少你不需要移动任何一本书。而且,你可以为不同的查询需求做多个这样的目录,比如一个按作者排序,另一个按出版年份排序。

简单来说:

  • 聚簇索引:是直接给你的书(数据)排好序,让你能快速定位。
  • 非聚簇索引:是给你一本“寻宝图”(额外的目录),告诉你宝藏(数据)藏在哪里。

希望这种比喻能帮你更容易理解聚簇索引和非聚簇索引的区别!

发表于 2025-05-12 12:06:44 回复(0)