建立索引的原则

索引设计原则和注意事项 一、索引设计原则 1、选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录 如学生的学号是唯一的,而如果使用姓名,可能存在同名现象,从而降低查询速度。 2、为常作为查询条件的字段建立索引(即where后面常用字段) 如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度。因此,为这样的字段建⽴立索引,可以提⾼高整个表的查询速度 3、为经常需要排序、分组和联合操作的字段建立索引 经常需要order by、group by、distinct和union等操作 阅读详情

建立索引常用的规则如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

9、删除无用的索引,避免对执行计划造成负面影响;
数据库创建索引的原则

索引可以提高数据的访问速度,但同时也增加了插入、更新和删除操作的处理时间。所以是否要为表增加索引、索引建立在那些字段上,是创建索引前必须要考虑的问题。解决此问题就是分析应用程序的业务处理、数据使用,为经常被用作查询条件、或者被要求排序的字段建立索引。

索引是建立在数据库表中的某些列的上面。因此,在创建索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。

一般选择在这样的列上创建索引:

1.在经常需要搜索查询的列上创建索引,可以加快搜索的速度;

2.在作为主键的列上创建索引,强制该列的唯一性和组织表中数据的排列结构;

3.在经常用在连接的列上创建索引,这些列主要是一些外键,可以加快连接的速度;

4.在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;

5.在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询 时间;

6.在经常使用在Where子句中的列上面创建索引,加快条件的判断速度;

7.为经常出现在关键字order by、group by、distinct后面的字段,建立索引。

 一般不选择具有这些特点的列上创建索引:

1.对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查 询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求;

2.不要在有大量相同取值的字段上,建立索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加 快检索速度;

3.对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少;

4.当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。

创建索引需要注意的地方:

1.限制表上的索引数目。对一个存在大量更新操作的表,所建索引的数目一般不要超过3个,最多不要超过5个。索引虽说提高了访问速度,但太多索引会影响数据的更新操作。

2.避免在取值朝一个方向增长的字段(例如:日期类型的字段)上,建立索引;对复合索引,避免将这种类型的字段放置在最前面。由于字段的取值总是朝一个方向 增长,新记录总是存放在索引的最后一个叶页中,从而不断地引起该叶页的访问竞争、新叶页的分配、中间分支页的拆分。此外,如果所建索引是聚集索引,表中数 据按照索引的排列顺序存放,所有的插入操作都集中在最后一个数据页上进行,从而引起插入“热点”。

3.对复合索引,按照字段在查询条件中出现的频度建立索引。在复合索引中,记录首先按照第一个字段排序。对于在第一个字段上取值相同的记录,系统再按照第二 个字段的取值排序,以此类推。因此只有复合索引的第一个字段出现在查询条件中,该索引才可能被使用。因此将应用频度高的字段,放置在复合索引的前面,会使 系统最大可能地使用此索引,发挥索引的作用。

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

索引的设计原则:什么时候该建索引 索引设计需遵循“高频查、大数据、高选择性”原则,WHERE、JOIN、ORDER BY字段优先建索引,但避免在低选择性、小表、频繁更新字段上建索引。复合索引注意字段顺序,优先选择性高的列。使用覆盖索引可提升性能,避免函数操作、LIKE '%xxx'、OR条件、类型不匹配等导致索引失效。通过EXPLAIN分析执行计划,定期优化索引,确保高效查询。 阅读详情

相关推荐

mysql建立索引的原则

1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。 2.为经常需要排序、分组和联合操作的字段建立索引 经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间。如果为...

阅读之后,对你有帮助,那就点个赞再走吧 555

建立索引的几大原则

https://blog.youkuaiyun.com/LJFPHP/article/details/89156326html 建索引的几大原则 1.最左前缀匹配原则,很是重要的原则,mysql mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就中止匹配,sql 好比a = 1 and b = 2 and c > 3 and d = 4函数 若是创建(a,b,c,d)顺序的索引,d是用不到索引的,大数据 若是创建(a,

qq_33898609的博客 4068

大疆OcuSync系统背后的黑科技:跳频扩频技术如何让你的无人机飞得更稳

本文深入解析了大疆OcuSync系统如何运用跳频扩频技术等先进无线通信方案,显著提升无人机在复杂环境下的飞行稳定性。系统通过跳频扩频与直接序列扩频技术协同工作,结合双频智能切换与多天线MIMO,有效对抗信号干扰与多径效应,确保控制指令与高清图传的可靠、低延迟传输,为用户带来更安心、更流畅的飞行体验。

ol7890123的博客 627

创建索引的9个原则

今天是元旦,2022年第1天,我立个flag,坚持每天写博客。创建索引是我们提高数据库查询数据库效率最常用的方法,也是很重要的方法。

weixin_48906544的博客 5912

告别regsvr32!易语言调用大漠插件dm.dll的免注册实战(附Win7/10/11避坑指南)

本文详细介绍了易语言如何免注册调用大漠插件dm.dll的实战方法,通过`dmreg.dll`实现真正的免注册调用,规避了传统`regsvr32`注册方式带来的权限和兼容性问题。文章包含核心原理剖析、易语言实现细节、多系统兼容性方案及高级应用场景,帮助开发者实现绿色化部署,提升自动化脚本开发效率。

weixin_42553471的博客 296

Verilog除法器(32位无符号+带符号)

32位无符号除法器设计 恢复余数法: 恢复余数除法的基本思路是从“部分余数”中减去除数,如果结果为负(不够减),则恢复原来的部分余数,商0. 寄存器使用: reg_r 存放被除数a reg_b 存放除数b reg_r 存放余数(初始清零) 具体做法: 做减法时,减数是reg_b中的除数,被减数是reg_r中的余数左移一位,最低位由reg_q(被除数)的最高位补充。为了能够判断相减结果的正...

qq_38600065的博客 1万+

索引创建的原则

原则:对于经常在查询条件中出现的列,应该创建索引。这是因为索引可以快速定位到满足查询条件的数据行,减少数据扫描的范围。例如,如果一个表经常按照用户 ID 进行查询,那么在用户 ID 列上创建索引是很有必要的。示例:在一个电商订单表中,订单号是用户查询订单的常用依据,那么可以为订单号列创建索引。

m0_57836225的博客 1405

CANoe: Panel的上位机控制方法

本文介绍了不同于IG的报文控制方法,实现了Panel面板的控制模式。

Jonsnow3zz的博客 1405

SQL索引建立原则和使用

之前在网上看到过很多关于mysql联合索引最左前缀匹配的文章,自以为就了解了其原理,发现遗漏了些东西,这里自己整理一下这方面的内容。 1 前言 SQL索引有两种,聚集索引和非聚集索引 聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续 字典的拼音查询法就是聚集索引,字典的部首查询就是一个非聚集索引. 聚集索引和非聚集索引的根本区别是表记录的...

zzhongcy的专栏 2万+

CANoe_Demo_下载以及安装教程

CANoe Demo下载安装流程

Jar_Lee的博客 1万+

HAL STM32+EC11编码器实现增减调节及单击、双击、长按功能

HAL STM32+EC11编码器实现增减调节及单击、双击、长按功能

perseverance51博客 4231

建立索引的原则有哪些?

在建立数据库表的时候,建立索引,能帮助我们提升查询速度,在MyISAM和InnoDB数据库引擎中,都采用的B+树索引。 如何建立索引?或者说建立索引的原则有哪些?这是面试官常会提及的问题。 主要的一些原则有: 建立唯一索引。唯一索引能够更快速地帮助我们进行数据定位; 为经常需要进行查询操作的字段建立索引; 对经常需要进行排序、分组以及联合操作的字段建立索引; 在建立索引的时候,要考虑索引的最左匹配原则(在使用SQL语句时,如果where部分的条件不符合最左匹配原则,可能导致索引失效,或者不能完全

进击的Coder*的博客 5795

Linux----Ubuntu系统官网下载iso镜像文件

Linux----Ubuntu系统官网下载iso镜像文件

MQ0522的博客 5万+

Oracle建立索引的原则

1.数据库建立索引的原则 铁律一:天下没有免费的午餐,使用索引是需要付出代价的。 铁律二:对于查询中很少涉及的列或者重复值比较多的列,不要建立索引。 铁律三:对于按范围查询的列,最好建立索引。 铁律四:表中若有主键或者外键,一定要为其建立索引。 铁律五:对于一些特殊的数据类型,不要建立索引。 铁律六:索引可以跟Where语句的集合融为一体。 建立索...

coolcoffee168的专栏 4428

PT:pt write_change to innovus 脚本

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1525

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

索引建立的原则

基于合理的数据库设计,经过深思熟虑后为表建立索引,是获得高性能数据库系统的基础。而未经合理分析便添加索引,则会降低系统的总体性能。索引虽然说提高了数据的访问速度,但同时也增加了插入、更新和删除操作的处理时间。 是否要为表增加索引、索引建立在那些字段上,是创建索引前必须要考虑的问题。解决此问题的一个比较好的方法,就是分析应用程序的业务处理、数据使用,为经常被用作查询条件、或者被要求排序的字段建立索

shmylm4201的专栏 644

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

MySQL索引建立原则

一. 索引的建立原则 索引的设计需要遵循一些已有的原则, 这样便于提升索引的使用效率, 更高效的使用索引. 对查询频次较高, 且数据量比较大的表, 建立索引. 索引字段的选择, 最佳候选列应当从where子句的条件中提取, 如果where子句中的组合比较多, 那么应当挑选最常用, 过滤效果最好的列的组合. 如果where后有多个条件经常被用到, 建议建立符合 索引, 复合索引需要遵循最左前缀法则, N个列组合而成的复合索引, 相当于创建了N个索引. 复合索引命名规则 index_表名_列名1

htflll的博客 1332

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数据库建立索引的原则

数据库建立索引的原则 1,确定针对该表的操作是大量的查询操作还是大量的增删改操作。 2,尝试建立索引来帮助特定的查询。检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引。 3,尝试建立复合索引来进一步提高系统性能。修改复合索引将消耗更长时间,同时,复合索引也占磁盘空间。 4,对于小型的表,建立索引可能会影响性能 5,应该避免对具有较少值的字段进行索引。 ...

haleyyan的博客 511

mysql建立索引的原则_mysql建立组合索引原则

现实中,mysql可以根据业务需要建立组合索引,由于mysql使用B-Tree格式索引,可以直接定位记录,无需扫描。 mysql建立多列索引有最左前缀的原则,即最左优先,如: 如果有一个2列的索引(col1,col2),则已经对(col1)、(col1,col2)上建立了索引; 如果有一个 3现实中,mysql可以根据业务需要建立组合索引,由于mysql使用B-Tree格式索引,可以直接定位记录,...

weixin_35715490的博客 385

MySQL建立索引原则

1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。 2.为经常需要排序、分组和联合操作的字段建立索引 经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间。如果为...

rogerxue12345的博客 153

mysql 索引的建立原则

https://blog.youkuaiyun.com/eaphyy/article/details/69259079 联合索引 : mysql索引最左匹配原则的理解 https://blog.youkuaiyun.com/qq_24690761/article/details/52787897 前缀索引:

hall__of_fame的博客 153

复合索引的建立原则

复合索引的建立原则: 如果您很可能仅对一个列多次执行搜索,则该列应该是复合索引中的第一列。如果您很可能对一个两列索引中的两个列执行单独的搜索,则应该创建另一个仅包含第二列的索引。 如上图所示,如果查询中需要对年龄和性别做查询,则应当再新建一个包含年龄和性别的复合索引。 包含多个列的主键始终会自动以复合索引的形式创建索引,其列的顺序是它们在表定义中出现的顺序,而不是在主键定义中指定的顺序。

无丶极的专栏 2465
上一篇: EasyExcel导入数据
下一篇: SQL Server分页SQL
塔夫先生
博客等级 码龄8年 11粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值