标签:name 使用 查询 索引 mysql table 优化
前记
在mysql地层中使用的是B+树结构,这种结构有一种好处,可以在三层结构中开源存放超过2000万行数据。也就是说只需要最多进行三次IO就可以满足我们平时百分之99的需求。在此基础下,mysql为我们提供了广大的操作空间,只要优化得当,可以在千万级的表中快速获得我们所需要的数据。在通过一段时间的学习后我总结了以下几条经验:
1、查看表结构是否建立索引
众所周知在数据库查询中,索引的重要性不言而喻。一个良好的数据库索引结构可以使查询相比于不使用索引的情况下快出十几倍甚至几十倍。
mysql创建索引命令
使用alter创建普通索引:
ALTER TABLE table_name ADD INDEX index_name(column_list)
使用alter创建唯一索引 unique:
ALTER TABLE table_name ADD UNIQUE(column_list)
使用alter创建主键索引:
ALTER TABLE table_name ADD PRIMARY KEY(column_list)
使用alter创建全文(FUNLLTEXT INDEX)索引:
ALTER TABLE table_name ADD FUNLLTEXT INDEX index_name(col1,col2...)
使用alter创建联合索引:
ALTER TABLE table_name ADD INDEX index_name(col1,col2...)
删除索引:
DROP INDEX index_name ON table_name
2、查看查询语句是否使用到索引
在使用索引的过程中不仅仅建立了索引即可,还需查看在实际执行sql的时候是否使用到索引。如在联合索引的时候需遵循最左前缀原则,如在一张建立了联合索引 (username,age,sex)的users表中使用以下查询语句
1 select * from users where username='pier' and age=12; 2 select * from users where age=12 and sex=0; 3 select * from users where sex=0;
在上面的三条语句中,只有第一条语句是可以使用到索引的,这是因为在mysql中,使用的B+树结构遵循的是最左前缀原则,在username字段中取首字母比对大小,在以首字母大小进行排序后在进行查找age=12的顺序。因第2和第三不满足最左前缀原则,所以不能使用索引。
3、检查查询语句是否查询了不需要的字段
在查询一张表中,开发人员在项目前期可能为了赶进度,导致写sql时没有太注意sql查询。本来只需要一两个字断的,结果查询了所有字断。这种情况在表字段较少时没什么影响,但如果一个表中有几十个甚至几百个字段时就很影响性能了。于是在处理慢查询时,这也是需要考虑的情况之一。
4、数据库长时间的沉淀导致单库单表数据量庞大
这种情况一般发生在项目上线时间很久之后出现,如果遇到这种情况,就需要考虑分库分表了。
在学习的过程中我们总会遇到突发的情况,如何在短时间内快速漂亮去处理这些情况,这需要我们通过不断的学习去积累,不积硅步,无以至千里,加油。
推荐一个可视化学习数据结构的网站:
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
标签:name,使用,查询,索引,mysql,table,优化 来源: https://www.cnblogs.com/benpaodewugui/p/15324564.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。