位置: 编程技术 - 正文

浅谈mysql的索引设计原则以及常见索引的区别(mysql的索引实现原理)

编辑:rootadmin

推荐整理分享浅谈mysql的索引设计原则以及常见索引的区别(mysql的索引实现原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql索引有哪些,mysql中的索引,mysql中的索引,mysql索引的理解,mysql中的索引,mysql索引的使用和原理,mysql中的索引,mysql索引的使用和原理,内容如对您有帮助,希望把文章链接给更多的朋友!

索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针.

数据库索引的设计原则:

为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。那么索引设计原则又是怎样的?

1.选择唯一性索引

唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。

2.为经常需要排序、分组和联合操作的字段建立索引

经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间。如果为其建立索引,可以有效地避免排序操作。

3.为常作为查询条件的字段建立索引

如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度。因此,为这样的字段建立索引,可以提高整个表的查询速度。

4.限制索引的数目

索引的数目不是越多越好。每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。修改表时,对索引的重构和更新很麻烦。越多的索引,会使更新表变得很浪费时间。

5.尽量使用数据量少的索引

如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR()类型的字段进行全文检索需要的时间肯定要比对CHAR()类型的字段需要的时间要多。

6.尽量使用前缀来索引

如果索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索会很浪费时间。如果只检索字段的前面的若干个字符,这样可以提高检索速度。

7.删除不再使用或者很少使用的索引

表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再需要。数据库管理员应当定期找出这些索引,将它们删除,从而减少索引对更新操作的影响。

8.小表不应建立索引;包含大量的列并且不需要搜索非空值的时候可以考虑不建索引

----------------------------------------------------------

mysql索引相关小常识:

一、 经常被用来过滤记录的字段。

1. primary key 字段, 系统自动创建主键的索引;2. unique key 字段,系统自动创建对应的索引;3. foreign key 约束所定义的作为外键的字段;

4. 在查询中用来连接表的字段;

5. 经常用来作为排序(order by 的字段)基准的字段;

二、索引会占用磁盘空间,创建不必要的索引只会形成浪费。

三、索引的创建必须考虑数据的操作方式。

1.内容很少变动,经常被查询,为它多创建几个索引?o所谓;

浅谈mysql的索引设计原则以及常见索引的区别(mysql的索引实现原理)

2.经常性,例行性变动的表而言,则需要谨慎地创建确实必要的索引;

四、primary key 和 unique key的区别

1. 作为Primary Key的域/域组不能为null。而Unique Key可以。

2. 在一个表中只能有一个Primary Key,而多个Unique Key可以同时存在。

更大的区别在逻辑设计上, Primary Key一般在逻辑设计中用作记录标识,这也是设置Primary Key的本来用意, 而Unique Key只是为了保证域/域组的唯一性。

五、复合索引和单一索引

复合索引是指多字段联合索引,查询时经常需要这几个字段组合一起为条件再查询

唯一索引主要是用主键ID索引,存储结构顺序与物理结构一致

如:create index idx on tbl(a,b)

先按a排序, a相同的按b排序,所以当你查a或ab的时候,

能够利用到这个索引.但当你只查b的时候,索引对你的帮助不大.可能可以跳跃查找.

---------------------------------------------

添加和删除索引的情况:

1、表的主键、外键必须有索引;

2、数据量超过w的表应该有索引;

3、经常与其他表进行连接的表,在连接字段上应该建立索引;

4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

5、索引应该建在选择性高的字段上;

6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:

A、正确选择复合索引中的主列字段,一般是选择性较好的字段;

B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;

C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;

D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;

E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;

8、频繁进行数据操作的表,不要建立太多的索引;

9、删除无用的索引,避免对执行计划造成负面影响;

以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大

以上这篇浅谈mysql的索引设计原则以及常见索引的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。

MySQL5绿色版windows下安装总结(推荐) 1下载MySQL下载地址:

老生常谈MYSQL模式匹配 REGEXP和like的用法 likelike要求整个数据都要匹配,而REGEXP只需要部分匹配即可。也就是说,用Like,必须这个字段的所有内容满足条件,而REGEXP只需要有任何一个片段满足即

mysql索引使用技巧及注意事项 一.索引的作用一般的应用系统,读写比例在:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些

标签: mysql的索引实现原理

本文链接地址:https://www.jiuchutong.com/biancheng/349891.html 转载请保留说明!

上一篇:MySQL中Decimal类型和Float Double的区别(详解)(mysql中decimal对应java类型)

下一篇:MySQL5绿色版windows下安装总结(推荐)(mysql绿色版安装配置教程)

  • 如何计算转让金融商品盘亏应交增值税
  • 计提税费的会计分录怎么写
  • 出口关税税率表
  • 发票一年不能开超多少才不扣税费
  • 收到股东投资款怎么做账
  • 所有者权益变动表图片
  • 行政单位工资支出标准
  • 怎么理解捐赠支出税前扣除标准计算口径
  • 销项抵扣需要缴纳城建税吗
  • 营改增后销售租赁后的设备如何做税务处理?
  • 没有进货票的商品可以销售吗
  • 单位捐赠汽车账务处理要如何做?
  • 企业分期付款购车分录怎么写
  • 公司购车购置税怎么交款
  • 开完红字发票后,正数发票如何开具?
  • 个税中的其他所得税
  • 一般纳税人转出进项税额
  • 实收资本弥补亏损账务处理
  • 通过检查人力资源
  • 自然人出租房屋房产税
  • 房地产公司靠什么赚钱
  • 增值税有没有定额抵扣
  • 以前工程发票如何抵扣
  • 股东撤资退出
  • 以前年度多计提了税金怎么办
  • 空调安装费计入什么科目
  • 去掉右键菜单中的快捷键
  • 非正常损失含义
  • PHP:oci_pconnect()的用法_Oracle函数
  • 官网下载的iso怎么用u盘安装
  • win10记事本怎么改字体颜色
  • 继续涉入资产会计处理
  • 印花税怎么计提和结转
  • 财务管理是如何工作的
  • 微信公众号支付的钱能追回吗
  • 暂估纳税调增了账务怎么处理
  • 微信小程序反编译2023
  • codegenerator用法
  • gridview怎么连接数据库
  • 折旧与摊销会计分录
  • css3知识总结
  • 用python编写素数
  • 工作服计入什么明细科目
  • 申报经营所得成绩怎么填
  • 已经申报过增值税,清卡时显示未申报什么原因
  • 培训费发票是否含税
  • c语言fgets函数用法stdin
  • mongodb数据查询
  • 税控服务费全额抵扣怎么申报
  • 配电室增容验收标准
  • sqlserver调度
  • 影响无形资产的营业利润怎么算
  • 为什么要缴纳保险
  • 减值准备的会计科目
  • 库存现金余额过大的风险
  • 一年内到期的非流动负债是经营性负债吗
  • 已认证的发票开具红字发票账务处理?
  • 现金支票存根联丢失怎么办
  • win8.1 开始
  • win10怎么设置有线网络
  • iis安装文件xp版
  • win7共享设置(详细图文步骤)
  • python函数enumerate
  • javascript 异步操作
  • emulator: ERROR: no search paths found in this AVD's configuration. Weird, the AVD's config.ini file
  • 浅谈自己对教育的理解
  • js面向对象面试题
  • node.js连接mysql数据库的方法有哪些
  • python内置数据结构有哪些
  • 怎样学好js中的逻辑
  • 如何配置centos7
  • 江苏国税电子税务局打印控件
  • 如何查询车辆购置税发票
  • 深圳市福田区税务局电话
  • 电子税务局新户报道怎么弄
  • 房屋维修是什么职业
  • 关于税收的问题及答案
  • 企业对税务局建议
  • 地下建筑规定
  • 会计人员的立场
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设