简介:mysql提供了一个特别的explain语句,用来分析查询语句的性能 : explain select ...1.在所有用于where,order by,group by的列上添加索引创建索引添加主键索引 : ALTER TABLE `table_name` ADD PRIMARY KEY (`column` ...
|
mysql提供了一个特别的explain语句,用来分析查询语句的性能 : explain select ... 1.在所有用于where,order by,group by的列上添加索引 创建索引 添加主键索引 : ALTER TABLE `table_name` ADD PRIMARY KEY (`column`) 添加唯一索引 : ALTER TABLE `table_name` ADD UNIQUE (`column`) 添加全文索引 : ALTER TABLE `table_name` ADD FULLTEXT (`column`) 添加普通索引 : ALTER TABLE `table_name` ADD INDEX index_name (`column` ) 添加组合索引 : ALTER TABLE `table_name` ADD INDEX index_name (`column1`, `column2`, `column3`) 2.用union优化like语句 当or关键字在where子句中使用频率过高时,它可能会使mysql优化器错误的选择全表扫描来检索记录。union子句可以使查询执行的更快,尤其是当其中一个查询有一个优化索引,而另一个查询也有一个优化索引的时候 比如,在first_name和last_name上分别存在索引的情况下,执行如下查询语句 mysql> select * from students where first_name like "abc%" or last_name like "abc%" 上述查询和下面使用union合并两条充分利用查询语句的查询相比,速度慢了许多 mysql> select * from students where first_name like "abc%" union all select * from students where last_name like "abc%" 3.避免使用带有前导通配符的表达式 当查询中存在前导通配符时,mysql无法使用索引,查询会导致MySQL执行全表扫描 使用MySQL的全文检索(FTS)代替使用通配符查询数据 mysql> alter table students add fulltext(first_name, last_name);mysql> select * from students where match(first_name, last_name) against ("abc");本文仅代表作者个人观点,不代表巅云官方发声,对观点有疑义请先联系作者本人进行修改,若内容非法请联系平台管理员,邮箱2522407257@qq.com。更多相关资讯,请到巅云www.rzxsoft.cn学习互联网营销技术请到巅云建站www.rzxsoft.cn。 |