针对数据库索引的优化

本文主要对索引的创建及使用做详细描写叙述,至于为什么要使用索引、使用索引带来哪些优点、索引的分类等内容这里不再赘述,假设想知道请參考相关文档。

一、怎样正确的创建索引

1、对主键、外键 建立索引

因为开发中常常通过主键或者外键去查找某条或者多条记录,所以须要对主键、外键建立索引

2、对于常常出如今查询条件中的字段建立索引

对于常常出如今查询条件中的字段建立索引往往能提高查询效率

3、结合须要返回的字段创建索引

对于须要查询结果返回的字段建立组合索引能够不用查询数据表就能够得到数据。比如:select id,name,code from student where id=? 。假设对id,name,code建立索引的话,直接查询索引表就能够得到想要的数据了,这时就不用再訪问student表。

创建索引的经常使用注意事项有这么几个。创建索引当然不是越多越好。假设创建索引不当,还会导致查询效果比没有创建索引还低,或者索引表的数据比数据表的数据还大,所以使用须要须要小心慎重。

下边给出一个索引创建指引表:


 


字段类型


常见字段名


须要建索引的字段


主键


ID,PK


外键


PRODUCT_ID,COMPANY_ID,MEMBER_ID,ORDER_ID,TRADE_ID,PAY_ID


有对像或身份标识意义字段


HASH_CODE,USERNAME,IDCARD_NO,EMAIL,TEL_NO,IM_NO


索引慎用字段,须要进行数据分布及使用场景具体评估


日期


GMT_CREATE,GMT_MODIFIED


年月


YEAR,MONTH


状态标志


PRODUCT_STATUS,ORDER_STATUS,IS_DELETE,VIP_FLAG


类型


ORDER_TYPE,IMAGE_TYPE,GENDER,CURRENCY_TYPE


区域


COUNTRY,PROVINCE,CITY


操作人员


CREATOR,AUDITOR


数值


LEVEL,AMOUNT,SCORE


长字符


ADDRESS,COMPANY_NAME,SUMMARY,SUBJECT


不适合建索引的字段


描写叙述备注


DESCRIPTION,REMARK,MEMO,DETAIL


大字段


FILE_CONTENT,EMAIL_CONTENT

二、怎样正确的使用索引

1、避免在where 子句中对字段进行is null 推断。这样将使引擎放弃使用索引而是全表扫描数据

2、避免在where子句中对字段进行不等潘丹(<>、 !=)。否则相同使用引擎全表扫描

3、避免在where子句中对字段进行or,in 推断。相同导致引擎全表扫描数据

建议使用union取代,例如以下样例,前提是code是索引

不建议使用的语句:select  id from student where code = ‘000012‘ or code = ‘000015‘

建议使用的语句: select id from student where code = ‘000012‘ union all  select id from student where code = ‘000015‘

4、避免在where 子句中对字段进行not in,not exists 的推断,相同导致索引失效

5、避免在where子句中对字段进行表达式操作(函数算法计算)。相同导致索引失效

比如:select id from student where  DATEDIFF(SYSDATE,createDate) > 30

select id from student where col/2 =15

6、使用Like时,避免使用非字母开头检索

比如:select id from student where name like ‘%王%‘  应该使用select id from student where name like ‘王%‘

7、在使用索引字段作为条件时。假设该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才干保证系统使用该索引,否则该索引将不会被使用,而且应尽可能的让查询字段顺序与索引顺序相一致。 

PS:上边标注红色的第三条为五六年前数据库运行的标准。如今数据库一般都支持对in 或者 or 的索引查询。

时间: 2024-08-18 09:13:07

针对数据库索引的优化的相关文章

数据库索引以及优化

什么是索引? 索引用来快速地寻找那些具有特定值的记录. 索引是加速查询主要手段,索引是快速定位数据的技术. 索引是一种特殊的文件(innoDB(事务性数据库的首选引擎)数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针. 索引:一种特殊的目录,聚集索引和非聚集索引 聚集索引:如同字典中按照字母查询,我们把这种正文内容本身就是一种按照一定规则排列的目录称为聚集引. 非聚集索引:如同字典中按照偏旁来查询某个字,我们把这种目录纯粹是目录,正文纯粹是正文的排序. 主键就是聚集

【SQLSERVER】数据库索引维护/优化

好几个月没更新博客了,一方面是因为换工作和搬家的原因,比较忙:另一方面是因为觉得对数据库的理解还不够深刻,花了些时间在学习上. 最近到新公司后,做了些数据库索引优化和维护上的工作,趁着今天有空,写个博客与大家分享下,其实一些源码也是网上拷贝的,只不过是做了些改进,主要想分享的是一个优化的思路. 一.索引的利弊   优点: 1.大大加快数据的检索速度: 2.创建唯一性索引,保证数据库表中每一行数据的唯一性: 3.加速表和表之间的连接: 4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组

数据库索引的优化及SQL处理过程

想要设计出好的索引,首先必须了解SQL语句在数据库服务器中的处理过程,本文介绍数据库索引设计与优化中几个对索引优化非常重要的概念. 谓词 谓词就是条件表达式. SQL语句的where子句由一个或者多个谓词组成. WHERE SEX = 'M' AND (WHIGHT > 90 OR HEIGHT > 190) 上面这个WHERE子句有三个简单谓词: SEX = ‘M’ WRIGHT > 90 HEIGHT >190 也可以认为是两个组合谓词: WEIGHT > 90 OR H

数据库索引、优化

参考地址: 如何看MS SQLSERVER数据库的执行计划https://blog.csdn.net/luoyanqing119/article/details/17022649 聚集索引和非聚集索引https://www.cnblogs.com/aspnethot/articles/1504082.html 数据库SQL优化大总结之 百万级数据库优化方案https://www.cnblogs.com/yunfeifei/p/3850440.html 数据库优化之程序操作优化https://ww

数据库-----&gt;数据库索引-----&gt;所以原理以及如何设计并优化索引

1.数据库索引原理: 参见博客 2.如何设计数据库索引以及优化数据库索引: 参见博客

海量数据处理之数据库索引

第一部分,数据库索引及其优化 一,什么是索引 数据库索引好比是一本书前面的目录,能加快数据库的查询速度. 例如这样一个查询:select * from table1 where id=44.如果没有索引,必须遍历整个表,直到ID等于44的这一行被找到为止:有了索引之后(必须是在ID这一列上建立的索引),直接在索引里面找44(也就是在ID这一列找),就可以得知这一行的位置,也就是找到了这一行.可见,索引是用来定位的. 索引分为聚簇索引和非聚簇索引两种,聚簇索引 是按照数据存放的物理位置为顺序的,而

数据库理论之视图、事务、索引、优化查询

数据库理论之视图.事务.索引.优化查询 一.视图 灵魂三问 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如果要频繁的使用一张虚拟表,可以不用重复查询 3.如何使用视图 create view 视图名 as sql语句 注意:创建出来的视图只有表结构,数据来源还是原来的表 视图通常都是用于查询,所以尽量不要修改视图中的数据 思考:开发过程中应不应该使用视图? 不应该 二.触发器 命名规则及理论 在满足对某张表数据的增删改的情况下,自动触发的功

数据库索引优化。

数据库索引 大意指的是 : 查询最小结果集:更精确:搜索范围越小就越优化:减少回表数据大小: 尽可能 第一次走索引那一列的时候,取到最小的一个结果集,结果集越小,后面额回表数据就越小.系统性能就越高. 关系数据模型,二叉树

数据库索引设计与优化

这篇是计算机中数据库设计类的优质预售推荐<数据库索引设计与优化>. 盖国强.姜承尧.金官丁.叶金荣.童家旺一众国内数据库界巨腕争相作序|支付宝.网易.云和恩墨联DB掌门连袂推荐的造是什么书吗? 编辑推荐 中国数据库界几大势力云集于这本旷世奇作,没读过咋好意思和DBA同行打招呼 蚂蚁(原支付宝)数据库团队资深专家携成长回忆与技术历程倾情献上最优质翻译 本书旨在--通过设计适用于现代硬件的索引,来提升关系型数据库的性能 软硬件发展让数据库性能被忽视,但数据处理量增长更快,全新索引优化设计才能根治随