《Mysql应用Mysql索引优化方法解析》要点:
本文介绍了Mysql应用Mysql索引优化方法解析,希望对您有用。如果有疑问,可以联系我们。
本节内容:
mysql索引与索引优化.MYSQL学习
1,创建索引
对于查询占主要的应用来说,索引显得尤为重要.很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致.如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引会引起致命的性能下 降.但是也不是什么情况都非得建索引不可,好比性别可能就只有两个值,建索引不仅没什么优势,还会影响到更新速度,这被称为过度索引.MYSQL学习
2,复合索引
好比有一条语句是这样的:MYSQL学习
如果我们是在area和age上分别创立单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效 率,但是如果在area、age两列上创立复合索引的话将带来更高的效率.如果我们创立了(area, age, salary)的复合索引,那么其实相当于创立了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀 特性.因此我们在创立复合索引时应该将最常用作限制条件的列放在最左边,依次递减.MYSQL学习
3,索引不会包括有NULL值的列
只要列中包括有NULL值都将不会被包括在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的.所以我们在数据库设计时不要让字段的默认值为NULL.MYSQL学习
4,使用短索引
对串列进行索引,如果可能应该指定一个前缀长度.例如,如果有一个CHAR(255)的 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引.短索引不仅可以提高查询速度并且可以节省磁盘空间和I/O操作.MYSQL学习
5,排序的索引问题
mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的.因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包括多个列的排序,如果需要最好给这些列创建复合索引.MYSQL学习
6,like语句操作
一般情况下不鼓励使用like操作,如果非使用弗成,如何使用也是一个问题.like “%aaa%” 不会使用索引而like “aaa%”可以使用索引.MYSQL学习
7,不要在列上进行运算
MYSQL学习
将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成
MYSQL学习
8,不使用NOT IN和<>操作
NOT IN和<>操作都不会使用索引将进行全表扫描.NOT IN可以NOT EXISTS取代,id<>3则可使用id>3 or id<3来取代.
Mysql索引优化的技巧
深入理解Mysql的列索引和多列索引
了解 MySQL 主键与索引的联系与区别
mysql性能优化之索引优化MYSQL学习
欢迎参与《Mysql应用Mysql索引优化方法解析》讨论,分享您的想法,维易PHP学院为您提供专业教程。