首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

mysql创建索引

1、索引需要占用磁盘空间,因此在创建索引时要考虑到磁盘空间是否足够 2、创建索引时需要对表加锁,因此实际操作中需要在业务空闲期间进行 SELECT * FROM table_name WHERE...在已存在的表中,可以使用ALTER TABLE语句或者CREATE INDEX语句创建索引 在已存在的表中,索引创建语句结构 1.普通索引(Normal): ALTER TABLE 表名 ADD INDEX...UNIQUE INDEX 索引名 ON 表名(列名); 唯一索引的特点: 一个表中,可以有多个唯一索引 查询效率高 如果在某一列建立唯一索引,必须保证这列不能有重复数据 如果一个唯一索引上指定...'table_name' ADD PRIMARY KEY pk_index('col'); 从命令上可以看出 索引按类别分类:普通索引,唯一索引,全文索引,空间索引 索引按列的数量分类:单列索引,...,因此会占用存储空间,一般来说,索引表占用的空间的数据表的1.5倍;索引表的维护和创建需要时间成本,这个成本随着数据量增大而增大;构建索引会降低数据表的修改操作(删除,添加,修改)的效率,因为在修改数据表的同时还需要修改索引

3.7K40

MySQL InnoDB创建索引

1.3 InnoDB系统列 InnoDB在创建表的时候,除了用户自定义的列之外,还会额外地增加几个隐藏的列,这些列在MySQL Server看来是不可见的,我们称之为系统列。...二级索引的判断依据是TABLE_SHARE->keys,keys代表了表中定义的索引键值的数量,在创建二级索引的过程中,会通过一个for循环扫描所有键,并为之创建二级索引,当然,主键已经创建了聚簇索引...2.2 重启后创建索引 MySQL重启后,内部索引对象丢失,需要在启动后重新创建相关的索引MySQL重启后首先会将数据字典内的信息进行读取和初始化,然后根据数据字典的信息进行索引创建。...还是以上文的表t为例,假设现在MySQL重启,如何在t上构建索引? step1: 创建聚簇索引 无论如何,聚簇索引都会第一个创建。...step2: 创建二级索引 创建二级索引的过程和创建聚簇索引的过程稍有不同,原因在于用户自定义的二级索引是需要持久化的,所以需要先读数据字典,然后建立索引

5.6K30

MySQL索引原理及查询优化

在微信公众号"数据库开发"里看到的这篇文章,写的很好,就转载了 出处:美团技术博客 链接:http://tech.meituan.com/mysql-index.html MySQL索引原理及查询优化...本文旨在以开发工程师的角度来解释数据库索引的原理和如何优化查询。...MySQL索引原理 索引目的 索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。...查询优化 关于MySQL索引原理是比较枯燥的东西,大家只需要有一个感性的认识,并不需要理解得非常透彻和深入。我们回头来看看一开始我们说的查询,了解完索引原理之后,大家是不是有什么想法呢?...写在后面的话 本文以一个查询案例引入了MySQL索引原理、优化查询的一些方法论;并针对遇到的典型案例做了详细的分析。

1K40

MySQL索引原理及查询优化

本文旨在以开发工程师的角度来解释数据库索引的原理和如何优化查询。...MySQL索引原理 ##索引目的 索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。...查询优化 关于MySQL索引原理是比较枯燥的东西,大家只需要有一个感性的认识,并不需要理解得非常透彻和深入。我们回头来看看一开始我们说的查询,了解完索引原理之后,大家是不是有什么想法呢?...比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可 回到开始的查询 根据最左匹配原则,最开始的sql语句的索引应该是status、operator_id、type、operate_time...写在后面的话 本文以一个查询案例引入了MySQL索引原理、优化查询的一些方法论;并针对遇到的典型案例做了详细的分析。

2.2K30

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

查询 什么是查询 MySQL查询日志是 MySQL 提供的一种日志记录,它用来记录在 MySQL 中响应时间超过阀值的语句,阈值指的是运行时间超过 long_query_time 值的 SQL...默认情况下,MySQL 数据库并不启动查询日志,需要我们手动来设置这个参数。 查询需要知道的 “点”  企业级开发中,查询日志是会打开的。但是这同样会带来一定的性能影响。...可 以 通 过 以 下 的 几 种 方 式 创 建 : CREATE INDEX 索引名 ON 表名(列名 1,列名 2,...); -- 创建索引 ALTER TABLE 表名 ADD INDEX...索引名 (列名 1, 列名 2,...); -- 修改表 CREATE TABLE 表名 ( [...], INDEX 索引名 (列名 1,列名 2,...) ); -- 创建表时指定索引  唯一索引...UNIQUE 索引名 (列名 1,列名 2,...); -- 修改表 CREATE TABLE 表名( [...], UNIQUE 索引名 (列名 1,列名 2,...) ); -- 创建表时指定索

2.8K50

mysql索引原理与查询优化

索引的两大类型hash与btree #我们可以在创建上述索引的时候,为其指定索引类型,分两类 hash类型的索引:查询单条快,范围查询 btree类型的索引:b+树,层数越多,数据量指数级增长(我们就用它...创建/删除索引的语法 1 创建索引 #方法一:创建表时 - 在创建表时就创建   create table 表名 ( 字段名1 数据类型 [完整性约束条件...加上索引 #1. 一定是为搜索条件的字段创建索引,比如select * from s1 where id=333;就需要为id加上索引 #2....并不是说我们创建索引就一定会加快查询速度,如果查询的是一个大范围(小范围的话也有提升)或者模糊查询,查询速度并没有太大提升 mysql> select count(*) from s1 where id...6.观察结果,不符合预期继续从0分析 八 日志管理 日志 - 执行时间 > 10 - 未命中索引 - 日志文件路径

2.5K80

MySQL 创建索引索引效率验证

给数据表创建索引 使用 create index 索引名 on 表名(字段名称(长度)); 来创建索引。 如果指定的字段类型是字符串,需要指定长度,建议长度与数据表中定义字段时的长度一致。...创建索引后,查看索引,可以看到刚创建索引信息。 5. 删除索引 使用 drop index 索引名 on 表名; 来删除索引。...开启 MySQL 运行时间监测 使用 set profiling=1; 开启 MySQL 运行时间检测,通过运行时间来对比有无索引的效率。...创建索引后查询 上面已经将刚才创建索引删掉了,现在重新创建索引,然后执行相同的查询语句。 ? 从查询结果下面的时间可以看到是0.00秒,所以说这个时间的精度不够,需要使用更精确的监测时间来查看。...通过 show profiles; 查看,创建索引之前的查询时间是 0.03757600 秒,创建索引之后的查询时间是 0.00038250 秒,时间相差了 将近 100 倍,这就是索引带来的效率提升。

3K30

oracle创建索引的sql语句_mysql创建组合索引

创建索引一般分为在线索引和非在线索引,在线与非在线的区别:非在线锁表,优先创建索引,此时DML都被阻塞,所以快;相反,在线锁的是行而非表,通过临时表进行索引创建,所以不会影响DML操作,但副作用就是...如果在生产环境操作,不停服务的话,势必导致创建索引期间仍有DML操作进来。另外如果是大表,那么采用非在线而导致锁表所带来的影响可能会很大。一句话,生产环境不停服的脚本操作,建议使用online。...1、创建索引。...LOAD_ID, LOAD_STATUS, FACILITY_RRN) tablespace TBS_MY_INDEX pctfree 10 initrans 2 maxtrans 255; 2、创建在线索引...DROP INDEX 索引名; 4、查看某个表的索引,表名需大写。 SELECT * FROM ALL_INDEXES WHERE TABLE_NAME = '表名' 5、查看某个表哪些列有索引

3.7K20

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

本文旨在以开发工程师的角度来解释数据库索引的原理和如何优化查询。...MySQL索引原理 索引目的 索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。...查询优化 关于MySQL索引原理是比较枯燥的东西,大家只需要有一个感性的认识,并不需要理解得非常透彻和深入。我们回头来看看一开始我们说的查询,了解完索引原理之后,大家是不是有什么想法呢?...比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可 回到开始的查询 根据最左匹配原则,最开始的sql语句的索引应该是status、operator_id、type、operate_time...写在后面的话 本文以一个查询案例引入了MySQL索引原理、优化查询的一些方法论;并针对遇到的典型案例做了详细的分析。

43130

MYSQL索引原理与查询优化

不应 频繁更新的列 不应 应 外键列 应 应 主键列 应 应 频繁修改索引列 不应 应  5、测试索引 1.创建数据 -- 1.创建表 CREATE TABLE userInfo( id int...创建表时尽量时 char 代替 varchar 4. 表的字段顺序固定长度的字段优先 5. 组合索引代替多个单列索引(经常使用多个条件查询时) 6....) 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索引原理及查询优化

如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。 如果从表中删除了某列,则索引会受到影响。...查询优化 4.1 MySQL Explain详解 我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain...,随机IO会比顺序IO很多。...官方解释:”为了解决查询,MySQL需要创建一个临时表来容纳结果。典型情况如查询包含可以按不同情况列出列的GROUP BY和ORDER BY子句时。...参考 (1)MySQL索引原理及查询优化 https://tech.meituan.com/2014/06/30/mysql-index.html (2)MySQL Explain详解 https:

97230

MySQL索引原理与查询优化

唯一索引 主键索引 组合索引 1.普通索引 普通索引仅有一个功能:加速查询 #创建表同时添加name字段为普通索引 create table tb1( id int not null auto_increment...不应 应 5.测试索引 1.创建数据 -- 1.创建表 CREATE TABLE userInfo( id int NOT NULL, name...创建表时尽量时 char 代替 varchar 4. 表的字段顺序固定长度的字段优先 5. 组合索引代替多个单列索引(经常使用多个条件查询时) 6....) 10.日志查询 查询日志    将mysql服务器中影响数据库性能的相关SQL语句记录到日志文件,通过对这些特殊的SQL语句分析,改进以达到提高数据库性能的目的。...查看 MySQL日志信息 #.查询日志配置信息 : show variables like '%query%'; #.修改配置信息 set global slow_query_log = on

1.2K70

mysql创建索引的原则

mysql中使用索引的原则有以下几点: 1、 对于查询频率高的字段创建索引; 2、 对排序、分组、联合查询频率高的字段创建索引; 3、 索引的数目不宜太多 原因:a、每创建一个索引都会占用相应的物理控件...StudentName, Sex, Address, Phone, BirthDate),其中需要对StudentNo,StudentName字段进行查询,对Sex字段进行分组,对BirthDate字段进行排序,此时可以创建多列索引...index index_name (StudentNo, StudentName, Sex, BirthDate); #index_name为索引名 在上面的语句中只创建了一个索引...创建多列索引,需要遵循BTree类型, 即第一列使用时,才启用索引。...在上面的创建语句中,只有mysql语句在使用到StudentNo字段时,索引才会被启用。

2.4K10

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

日常工作中,有些同学一遇到查询性能问题,就盲目要求 DBA 给表字段创建索引。这种做法对不对呢?今天,我们就来具体看看这背后的细节。 本文的例子均在 MySQL 5.7.26 中执行。...二级索引的维护代价 创建 N 个二级索引,就需要再创建 N 棵 B+ 树,新增数据时不仅要修改聚簇索引,还需要修改这 N 个二级索引。 我们通过实验测试一下创建索引的代价。...创建索引最佳实践 了解了上面的三条代价,现在我们知道,索引并不是解决查询的万能钥匙。这里我总结了三条创建索引的最佳实践供你参考。 第一,无需一开始就建立索引。...可以等到业务场景明确后,或者是数据量超过 1 万、查询变慢后,再针对需要查询、排序或分组的字段创建索引创建索引后可以使用 EXPLAIN 命令,确认查询是否可以使用索引。...一起学习请关注公众号:【杨同学technotes】领取 MySQL 精品技术书籍。

33830
领券