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_namelast_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');

  

优化mysql查询的更多相关文章

  1. Limit参数优化MySQL查询的方法

    在做一些查询时,总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描对客户端而言是没有意义的.那么,在mysql中有那些方式是可以避免全表扫面?除了通过使用索引列或分区等方式来进行 ...

  2. 如何优化mysql查询速度

    1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...

  3. 如何优化Mysql数据库

    1.添加主键ID 2.尽量避免使用select * form table 3.创建索引     对于查询占主要的应用来说,索引显得尤为重要.很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或 ...

  4. mysql查询性能优化

    mysql查询过程: 客户端发送查询请求. 服务器检查查询缓存,如果命中缓存,则返回结果,否则,继续执行. 服务器进行sql解析,预处理,再由优化器生成执行计划. Mysql调用存储引擎API执行优化 ...

  5. mysql性能优化-慢查询分析、优化索引和配置

    一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connec ...

  6. MySQL查询语句执行过程及性能优化(JOIN/ORDER BY)-图

    http://blog.csdn.net/iefreer/article/details/12622097 MySQL查询语句执行过程及性能优化-查询过程及优化方法(JOIN/ORDER BY) 标签 ...

  7. 开启Mysql慢查询来优化mysql

    开启Mysql慢查询来优化mysql 优化sql语句是优化数据库的一个很重要的方面,那么怎么发现那些耗时耗资源的sql语句呢,开启Mysql慢查询! 1.查看是否开启慢查询,默认情况下是关闭的.你的m ...

  8. mysql优化-》查询缓存

    使用MySql查询缓存(query_cache_size) 在MySql中查询缓存的原理: 其实是MySql创建了一个临时的空间叫Qcache(这个空间生成在MySql的编译器内存中),这个空间的大小 ...

  9. MySQL查询性能优化一则

    公司有一套Web系统, 使用方反馈系统某些页面访问速度缓慢, 用户体验很差, 并且偶尔还会出现HTTP 502错误. 这是典型的服务器端IO阻塞引发的问题,通过对访问页面的程序逻辑进行跟踪,发现问题应 ...

随机推荐

  1. spark sql 的metastore 对接 postgresql

    本教程记录 spark 1.3.1 版本的thriftserver 的metastore 对接 postgresql postgresql 的编译,参考:http://www.cnblogs.com/ ...

  2. SpringBoot | SpringBoot启动错误

    Error starting ApplicationContext. To display the conditions report re-run your application with 'de ...

  3. js+canvas(H5)实现小球移动小demo

    *canvas提供画布,大小自定义,js得到画布,从画布对象通过getContext('2d')来得到画笔,然后就可以开始画了 代码: <!DOCTYPE html> <html l ...

  4. [题解]luogu_AT1224_JOIOJI

    https://www.cnblogs.com/fengzhiyuan/p/7588443.html 不会map,有点菜 1.要想知道三个字母出现次数相等, 为J [ i ]-J [ j ]== O[ ...

  5. JQuery数组遍历 - $.each(),$().each()和forEach()

  6. django_uWSGI+nginx环境

    1 uWSGI 作用 Django 默认使用的是 Python 自带的 simple HTTPServer 提供web服务的,在安全性和效率上都是不行的,只能用作django开发测试. WSGI是一个 ...

  7. [未读]angularjs权威教程

    正在啃,赶脚不错...

  8. 自己开发shell脚本实现一键化安装。

    一.说明在现实环境中可能需要批量部署服务器,那么在我们已经部署好一台服务以后如果实现剩下的服务批量安装呢: 使用shell能否实现功能: 假设我们要部署lamp或者是lnmp如何实现脚本部署? 使用以 ...

  9. asp。Net 页面传值

    00.引言 Web页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留.在用ASP.NET 设计开发一个Web系统时, 遇到一 ...

  10. CF1061B Views Matter

    思路: 贪心. 实现: #include <bits/stdc++.h> using namespace std; ]; int main() { int n, m; while (cin ...