优化mysql查询
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');
优化mysql查询的更多相关文章
- Limit参数优化MySQL查询的方法
在做一些查询时,总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描对客户端而言是没有意义的.那么,在mysql中有那些方式是可以避免全表扫面?除了通过使用索引列或分区等方式来进行 ...
- 如何优化mysql查询速度
1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...
- 如何优化Mysql数据库
1.添加主键ID 2.尽量避免使用select * form table 3.创建索引 对于查询占主要的应用来说,索引显得尤为重要.很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或 ...
- mysql查询性能优化
mysql查询过程: 客户端发送查询请求. 服务器检查查询缓存,如果命中缓存,则返回结果,否则,继续执行. 服务器进行sql解析,预处理,再由优化器生成执行计划. Mysql调用存储引擎API执行优化 ...
- mysql性能优化-慢查询分析、优化索引和配置
一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1) max_connec ...
- MySQL查询语句执行过程及性能优化(JOIN/ORDER BY)-图
http://blog.csdn.net/iefreer/article/details/12622097 MySQL查询语句执行过程及性能优化-查询过程及优化方法(JOIN/ORDER BY) 标签 ...
- 开启Mysql慢查询来优化mysql
开启Mysql慢查询来优化mysql 优化sql语句是优化数据库的一个很重要的方面,那么怎么发现那些耗时耗资源的sql语句呢,开启Mysql慢查询! 1.查看是否开启慢查询,默认情况下是关闭的.你的m ...
- mysql优化-》查询缓存
使用MySql查询缓存(query_cache_size) 在MySql中查询缓存的原理: 其实是MySql创建了一个临时的空间叫Qcache(这个空间生成在MySql的编译器内存中),这个空间的大小 ...
- MySQL查询性能优化一则
公司有一套Web系统, 使用方反馈系统某些页面访问速度缓慢, 用户体验很差, 并且偶尔还会出现HTTP 502错误. 这是典型的服务器端IO阻塞引发的问题,通过对访问页面的程序逻辑进行跟踪,发现问题应 ...
随机推荐
- mysql8必知必会6 外键约束 增加 查询 删除 MySQL注释
- ZOJ 4016 Mergeable Stack(from The 18th Zhejiang University Programming Contest Sponsored by TuSimple)
模拟题,用链表来进行模拟 # include <stdio.h> # include <stdlib.h> typedef struct node { int num; str ...
- DRF教程1-序列化
序列化类 要建立web API,要做的第一件事就是对实例进行序列化,比如以json方式显示.我们可以生命序列化,它和django的forms很相似.在app目录下创建serializers.py fr ...
- 《Python网络爬虫之三种数据解析方式》
引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
- 洛谷1005(dp)
1.不要贪,缩小区间去dp就好. 2.预处理指数. 3.__int128可还行. #include <cstdio> #include <cctype> #include &l ...
- 持续集成~Jenkins里的NuGet和MSBuild插件
Jenkins是一个持续集成的环境,它是java开发的,大叔认为它的工作流程是 从源代码拉一个项目下来到它本地(可以配置定时机制) 恢复相关程序包nuget 编译程序 发布程序 现在说一下在配置jen ...
- Error CS0579 Duplicate 'System.Reflection.AssemblyTitleAttribute' attribute
今天在引入ClassLibraryQikuo的时候突然报错 Error CS0579 Duplicate 'System.Reflection.AssemblyTitleAttribute' attr ...
- scrapy安装遇到的Twisted问题
贴上大佬的博客地址:https://blog.csdn.net/a19990412/article/details/78849881 电脑一直在爆下面这一堆的信息 Command”c:\users\l ...
- uvm_comps.svh
UVM的文件组织方式很有意思,比如,在src/comps/ 下的所有文件都通过uvm_comps.svh 包含进去. `include "comps/uvm_pair.svh" ` ...
- (十)maven之排除冲突jar包
排除冲突jar包 jar包冲突 <dependencies> <dependency> <groupId>org.springframework</group ...