索引表中的每个字段将降低写入性能 。建议使用表中的唯一值为字段编制索引 。在关系数据库中充当外键的字段必须建立索引 , 因为它们有助于跨多个表进行复杂查询 。索引还使用磁盘空间 , 因此在选择要索引的字段时要小心 。什么是聚集索引聚集索引clustered index也叫聚簇索引 , 它的定义是:聚集索引的表中数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同 , 一个表中只能拥有一个聚集索引 。
例如:
结合上面的表格就很好理解了:数据行的物理顺序与列值的顺序相同 , 如果我们查询id比较靠后的数据 , 那么这行数据的地址在磁盘中的物理地址也会比较靠后 。聚集索引存储记录是物理上连续存在 , 而非聚集索引是逻辑上的连续 , 物理存储并不连续 。
为什么查询更快呢?我们通过上面的分析知道了索引是通过二叉树的数据结构来描述的 , 我们可以这么理解聚簇索引:索引的叶节点就是数据节点 。而非聚簇索引的叶节点仍然是索引节点 , 只不过有一个指针指向对应的数据块 。
主键一般会默认创建聚集索引 。
在创建聚集索引之前 , 应先了解您的数据是如何被访问的 。可考虑将聚集索引用于:
包含大量非重复值的列 。使用下列运算符返回一个范围值的查询:BETWEEN、>、>=、< 和 <= 。被连续访问的列 。返回大型结果集的查询 。经常被使用链接或 GROUP BY 子句的查询访问的列;一般来说 , 这些是外键列 。对 ORDER BY 或 GROUP BY 子句中指定的列进行索引 , 可以使 SQL Server 不必对数据进行排序 , 因为这些行已经排序 。这样可以提高查询性能 。OLTP型的应用程序 , 这些程序要求进行非常快速的单行查找(一般通过主键) 。应在主键上创建聚集索引 。聚集索引不适用于:
频繁更改的列 这将导致整行移动 , 因为 SQL Server 必须按物理顺序保留行中的数据值 。这一点要特别注意 , 因为在大数据量事务处理系统中数据是易失的
索引失效的典型例子条件中用or , 即使其中有条件带索引 , 也不会使用索引查询 , 这就是查询尽量不要用or的原因 , 用in吧 。
常见的sql优化手段有哪些1.避免全表扫描全表扫描往往发生在下面几种情况:
SQL的on子句或者where子句涉及到的列上没有索引;表数据量很小 , 走索引查询比全表扫描更麻烦;这对于少于10行且行长度较短的表来说很常见2.避免索引失效不在索引列上做任何操作(计算 , 函数、自动or手动类型转换) , 这样会导致索引失效而转向全表扫描 。
存储引擎不能使用索引中范围条件右边的列 。这个是因为age中查询时范围查询了 , pos列的索引就没有生效了
尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)) , 减少select * 。
对于MySQL而言
mysql在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描is null,is not null也无法使用索引like 通配符开头’%abc..’ , mysql索引会失效会变成全表扫描的操作3.避免排序 , 不能避免 , 尽量选择索引排序4.避免查询不必要的字段5.避免临时表的创建 , 删除
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 高球球杆的种类解析
- 解析产后抑郁症怎么办?产后抑郁症七大预防措施
- 烈日灼心真相是什么 烈日灼心深度解析
- 无法索引原因和解决措施 百度硬盘搜索无法索引
- 图文解析其实操步骤 电脑重装系统怎么一键备份还原
- 解析mini迅雷功能应用技巧 mini迅雷怎么写入软件
- 全面解析早晚练瑜伽的好处
- 解析led指示灯电阻计算公式 led指示灯接220v电阻怎么算
- 2者基本区别解析 java引用传递和值传递的区别
- 超详解析OSI模型知识点 一二三层交换机的区别