首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL索引需要的原则

1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。...因此,为这样的字段建立索引,可以提高整个表的查询速度。 4.限制索引的数目 索引的数目不是越多越好。每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。修改表时,对索引的重构和更新很麻烦。...越多的索引,会使更新表变得很浪费时间。 5.尽量使用数据量少的索引 如果索引的值很长,那么查询的速度会受到影响。...mysql会一直向右匹配直到遇到范围查询(>、 3 and d = 4 如果建立(a,b,c,d)顺序的索引...比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式 10.尽量选择区分度高的列作为索引

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    mysql索引多了有什么坏处

    建立索引常用的规则如下: 1、表的主键、外键必须有索引; 2、数据量超过300的表应该有索引; 3、经常与其他表进行连接的表,在连接字段上应该建立索引; 4、经常出现在Where子句中的字段,特别是大表的字段...,应该建立索引; 5、索引应该建在选择性高的字段上; 6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要索引; 7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:  A、正确选择复合索引中的主列字段...如果是,则可以建立复合索引;否则考虑单字段索引;  C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;   D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性...,考虑减少复合的字段;  C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引; 进行数据操作的表,不要建立太多的索引; 9、删除无用的索引,避免对执行计划造成负面影响...因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。

    2.7K20

    MySQL 查询、 索引、 事务隔离级别

    查询 什么是查询 MySQL查询日志是 MySQL 提供的一种日志记录,它用来记录在 MySQL 中响应时间超过阀值的语句,阈值指的是运行时间超过 long_query_time 值的 SQL...默认情况下,MySQL 数据库并不启动查询日志,需要我们手动来设置这个参数。 查询需要知道的 “点”  企业级开发中,查询日志是会打开的。但是这同样会带来一定的性能影响。...两张比较大的表进行 JOIN,但是没有给表的相应字段加索引 表存在索引,但是查询的条件过多,且字段顺序与索引顺序不一致 对很多查询结果进行 GROUPBY 索引 索 引 的 目 的 就...可 以 通 过 以 下 的 几 种 方 式 创 : CREATE INDEX 索引名 ON 表名(列名 1,列名 2,...); -- 创建索引 ALTER TABLE 表名 ADD INDEX...可 以 通 过 以 下 的 几 种 方 式 创 : CREATE UNIQUE INDEX 索引名 ON 表名(列名 1,列名 2,...); -- 创建索引 ALTER TABLE 表名 ADD

    2.8K50

    MySQL索引原理及查询优化

    MySQL索引原理 ##索引目的 索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。...查询优化 关于MySQL索引原理是比较枯燥的东西,大家只需要有一个感性的认识,并不需要理解得非常透彻和深入。我们回头来看看一开始我们说的查询,了解完索引原理之后,大家是不是有什么想法呢?...先总结一下索引的几大基本原则 索引的几大原则 1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b...,不需要索引 6.用改造后的语句实验一下,只需要10ms 降低了近200倍!...写在后面的话 本文以一个查询案例引入了MySQL索引原理、优化查询的一些方法论;并针对遇到的典型案例做了详细的分析。

    2.2K30

    MySQL索引原理及查询优化

    在微信公众号"数据库开发"里看到的这篇文章,写的很好,就转载了 出处:美团技术博客 链接:http://tech.meituan.com/mysql-index.html MySQL索引原理及查询优化...查询优化 关于MySQL索引原理是比较枯燥的东西,大家只需要有一个感性的认识,并不需要理解得非常透彻和深入。我们回头来看看一开始我们说的查询,了解完索引原理之后,大家是不是有什么想法呢?...先总结一下索引的几大基本原则 索引的几大原则 1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b...,不需要索引 6.用改造后的语句实验一下,只需要10ms 降低了近200倍!...写在后面的话 本文以一个查询案例引入了MySQL索引原理、优化查询的一些方法论;并针对遇到的典型案例做了详细的分析。

    1.1K40

    mysql索引原理与查询优化

    ,那么就是普通的 index 会员身份证号码 如果要索引的话,那么可以选择 unique (唯一的,不允许重复) #除此之外还有全文索引,即FULLTEXT 会员备注信息 , 如果需要索引的话,可以选择全文搜索...索引的两大类型hash与btree #我们可以在创建上述索引的时候,为其指定索引类型,分两类 hash类型的索引:查询单条快,范围查询 btree类型的索引:b+树,层数越多,数据量指数级增长(我们就用它...在表中已经有大量数据的情况下,索引会很慢,且占用硬盘空间,插入删除更新都很慢,只有查询快 比如create index idx on s1(id);会扫描表中所有的数据,然后以id为数据项,创建索引结构...完以后,再查询就会很快了 #3. 需要注意的是:innodb表的索引会存放于s1.ibd文件中,而myisam表的索引则会有单独的索引文件table1.MYI ? ?...6.观察结果,不符合预期继续从0分析 八 日志管理 日志 - 执行时间 > 10 - 未命中索引 - 日志文件路径

    2.6K80

    MYSQL索引原理与查询优化

    会员身份证号码 VARCHAR(18) 会员电话 VARCHAR(10) 会员住址 VARCHAR(50) 会员备注信息 TEXT 那么这个 会员编号,作为主键,使用 PRIMARY 会员姓名 如果要索引的话...,那么就是普通的 INDEX 会员身份证号码 如果要索引的话,那么可以选择 UNIQUE (唯一的,不允许重复) 4、聚集索引和辅助索引   数据库中的B+树索引可以分为聚集索引和辅助索引。...) EXPLAIN 参数详解: http://www.cnblogs.com/wangfengming/articles/8275448.html  2、日志查询 日志查询 将mysql服务器中影响数据库性能的相关...'; 测试日志查询 #查询时间超过10秒就会记录到查询日志中 select sleep(3) FROM user ; #查看表中的日志 select * from mysql.slow_log...在哪里 select * from tb1 limit 3000000,10; 玄机就处在这个*里面,这个表除了id主键肯定还有其他字段,比如name  age 之类的,因为select * 所以mysql

    1.2K130

    【知识】MySQL索引原理及查询优化

    ,就索引?...一般两种情况下不建议索引: 表记录比较少,例如一两千条甚至只有几百条记录的表,没必要索引,让查询做全表扫描就好了; 至于多少条记录才算多,这个个人有个人的看法,我个人的经验是以2000作为分界线,记录数不超过...2000可以考虑不索引,超过2000条可以酌情考虑索引。...查询优化 4.1 MySQL Explain详解 我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain...参考 (1)MySQL索引原理及查询优化 https://tech.meituan.com/2014/06/30/mysql-index.html (2)MySQL Explain详解 https:

    1K30

    干货:MySQL 索引原理及查询优化

    MySQL索引原理 索引目的 索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。...查询优化 关于MySQL索引原理是比较枯燥的东西,大家只需要有一个感性的认识,并不需要理解得非常透彻和深入。我们回头来看看一开始我们说的查询,了解完索引原理之后,大家是不是有什么想法呢?...先总结一下索引的几大基本原则 索引的几大原则 1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b...,不需要索引 6.用改造后的语句实验一下,只需要10ms 降低了近200倍!...写在后面的话 本文以一个查询案例引入了MySQL索引原理、优化查询的一些方法论;并针对遇到的典型案例做了详细的分析。

    45930

    MySQL索引原理与查询优化

    会员身份证号码 VARCHAR(18) 会员电话 VARCHAR(10) 会员住址 VARCHAR(50) 会员备注信息 TEXT 那么这个 会员编号,作为主键,使用 PRIMARY 会员姓名 如果要索引的话...,那么就是普通的 INDEX 会员身份证号码 如果要索引的话,那么可以选择 UNIQUE (唯一的,不允许重复) 4.聚合索引和辅助索引  数据库中的B+树索引可以分为聚集索引和辅助索引....) 10.日志查询 查询日志    将mysql服务器中影响数据库性能的相关SQL语句记录到日志文件,通过对这些特殊的SQL语句分析,改进以达到提高数据库性能的目的。...查询日志参数: long_query_time : 设定查询的阀值,超出设定值的SQL即被记录到查询日志,缺省值为10s slow_query_log : 指定是否开启查询日志...查看 MySQL日志信息 #.查询日志配置信息 : show variables like '%query%'; #.修改配置信息 set global slow_query_log = on

    1.3K70

    MySQL查询性能,该不该建索引

    日常工作中,有些同学一遇到查询性能问题,就盲目要求 DBA 给表字段创建索引。这种做法对不对呢?今天,我们就来具体看看这背后的细节。 本文的例子均在 MySQL 5.7.26 中执行。...聚簇索引和二级索引 说到索引,页目录就是最简单的索引。但当数据页有无数个时,就需要考虑建立索引,才能定位到记录所在的页。 为了解决这个问题,InnoDB 引入了 B+ 树。...二级索引的维护代价 创建 N 个二级索引,就需要再创建 N 棵 B+ 树,新增数据时不仅要修改聚簇索引,还需要修改这 N 个二级索引。 我们通过实验测试一下创建索引的代价。...创建索引最佳实践 了解了上面的三条代价,现在我们知道,索引并不是解决查询的万能钥匙。这里我总结了三条创建索引的最佳实践供你参考。 第一,无需一开始就建立索引。...一起学习请关注公众号:【杨同学technotes】领取 MySQL 精品技术书籍。

    35530

    mysql索引优点及几大原则

    索引的优点:   最常见的B-Tree索引,按照顺序存储数据,所以MYSQL可以用来做order by和group by操作。因为数据是有序的,所以B-Tree也就会将相关的列值存储在一起。...mysql索引的几大原则 1.选择唯一性索引   唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。...因此,为这样的字段建立索引,可以提高整个表的查询速度。 4.限制索引的数目   索引的数目不是越多越好。每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。...7.最左前缀匹配原则   当对多个列同时索引时,MySQL会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配 聚簇索引(Clustered Indexes)   聚簇索引并不是一种单独的索引类型...除聚簇索引之外的表上的每个非聚簇索引都是二级索引,又叫辅助索引(secondary indexes)。

    95300

    【Oracle】-【索引】先查数据再索引,还是先索引再插数据?

    问题: 1、新建一个表结构,创建索引,将百万或千万级的数据使用insert导入该表。 2、新建一个表结构,将百万或千万级的数据使用isnert导入该表,再创建索引。 这两种效率哪个高呢?...我感觉无论先还是后索引,当有数据时都需要update索引数据,问题是有索引的情况下插数据与有数据的情况下建立索引,各自的消耗。...2、先插数据,再建立两个索引,create table xxx as select * from t where 11;大约13秒,建立两个索引大约26秒和35秒。...总结: 如果先建立索引再插入数据,每次插入数据还需要修改索引信息。 实战还要看业务要求,有的业务可能还需要索引和约束对数据进行校验,这样就应该先建立索引了。...如果是一次性处理,原则上先插数据后索引

    2.8K30

    mysql性能优化(九) mysql查询分析、优化索引和配置

    mysql性能优化(九) mysql查询分析、优化索引和配置 强烈推介IDEA2020.2...long_query_time=2 注:log-slow-queries参数为查询日志存放的位置,一般这个目录要有mysql的运行帐号的可写权限,一般都将这个目录设置为mysql的数据存放目录...设置日志开启 ? MySQL后可以查询long_query_time 的值 。 ? 为了方便测试,可以将修改查询时间为5秒。 ?...如果查询日志中记录内容很多,可以使用mysqldumpslow工具(MySQL客户端安装自带)来对查询日志进行分类汇总。mysqldumpslow对日志文件进行了分类汇总,显示汇总后摘要结果。...开启查询日志后,由于日志记录操作,在一定程度上会占用CPU资源影响mysql的性能,但是可以阶段性开启来定位性能瓶颈。

    1.5K30

    MySQL选错索引导致的线上查询事故

    最近在线上环境遇到了一次SQL查询引发的数据库故障,影响线上业务。经过排查后,确定原因是SQL在执行时,MySQL优化器选择了错误的索引(不应该说是“错误”,而是选择了实际执行耗时更长的索引)。...本文的主要内容: 故障描述 问题原因排查 MySQL索引选择原理 解决方案 思考与总结 请大家多多支持我的原创技术公众号:后端技术漫谈 正文 故障描述 在7月24日11点线上某数据库突然收到大量告警,查询数超标...问题原因排查 首先当然要怀疑会不会该语句没走索引,查看表DML中的索引: KEY `idx_1` (`city_id`,`type`,`rank`), KEY `idx_log_dt_city_id_rank...而表是千万级别,并且该查询条件最后实际是返回的空数据,也就是MySQL在主键索引上实际检索时间很长,导致了查询。...总结 本文带大家回顾了一次MySQL优化器选错索引导致的线上查询事故,可以看出MySQL优化器对于索引的选择并不单单依靠某一个标准,而是一个综合选择的结果。

    2.2K00

    Mysql查询_mysql服务启动

    一、开启查询日志 1、查看是否开启:show variables like ‘slow_query_log’; 2、查看是否开启记录未使用索引的查询:show variables like ‘...log_queries_not_using_indexes’; 3、开启未使用索引的查询日志:set global log_queries_not_using_indexes=on; 4、查看超过多长时间的语句才会被记录到日志中...:show variables like ‘long_query_time’; 5、开启查询日志:set global slow_query_log=on; 6、查看查询日志记录位置:show...variables like ‘slow_query_log_file’; 7、查看查询日志:tail -f /var/lib/mysql/e3edd0de9e5d-slow.log; 二、分析查询日志...1、mysqldumpslow: mysqldumpslow -t 3 /var/lib/mysql/e3edd0de9e5d-slow.log; 2、pt-query-digest: 1)、安装

    5.1K10

    好文 | MySQL 索引B+树原理,以及索引的几大原则

    MySQL 中,主要有四种类型的索引,分别为:B-Tree 索引, Hash 索引, Fulltext 索引和 R-Tree 索引。...Archive 引擎直到 MySQL 5.1 才支持索引,而且只支持索引单个 AUTO_INCREMENT 列。...查询优化 关于MySQL索引原理是比较枯燥的东西,大家只需要有一个感性的认识,并不需要理解得非常透彻和深入。我们回头来看看一开始我们说的查询,了解完索引原理之后,大家是不是有什么想法呢?...四、索引的几大原则 1、最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、 3...比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可。 关注Java技术栈微信公众号,在后台回复关键字:mysql,可以获取更多栈长整理的MySQL数据库干货。

    1K10
    领券