速度会断壁式下跌。
一般是直接从表查询快。已经是索引列了。但是第一个查询如果数据不存在还是要遍历其他的表。这样速度就大打折扣了。
如果能保证数据一定在指定表中就是第一个快了。
大体分为如下几种情况会逆袭:
1、这个就是数据不存在,如果挨个遍历表,速度可能不如使用视图。
2、使用索引视图技术,这个跟使用表查询速度相差不大。
3、sqlserver是高级版本,可以发挥多CPU优势,这个时候速度也相差不大。
4、索引碎片过多集中在的某三四个表以上,这时候性能都比较沮丧。
从物理结构看,大多数的索引都是采用B-树结构,在叶子节点存放索引项,索引项< 键值,指针(记录的物理地址)>。在有索引时查询,会从B-树根节点开始查找键值相匹配的索引项,索引项包含指针,因此可以获取相应记录的磁盘地址,然后启动一次I/O *** 作读数。如果没有索引的话,就会扫描全表,在数据量大时这会进行大量的I/O *** 作,会非常耗时。有索引比没索引在查询时能获得更好的效率,数据量越大效益越明显。但是B-树不存储null,也就是如果查询的where条件是where xx is null,就不会走索引(即使该列上建有索引),此时会进行全表扫描。索引加快查询速度的原理:
建立索引时,数据库就会对数据按照一定的规则存放,数据检索的时候,已经是有序了,所以可以很快的速度检索出来哦
索引对数据库性能的影响
反之没有索引的有序排列,那么每次查询数据,都会扫描整张表,加大查询的开销,会使查询速度变慢。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)