Sql 查询语句优化
sql查询很慢,很多时候并不是数据量大,而是sql语法使用不正确,本文讲述了基础语法使用,避免一些不必要的坑。
explain select * from user;--查询执行时间
Sql优化方法
Sql 优化
1. 加索引
索引失效情景:
1. 条件中有or,or后面条件列没有索引,全表扫描
2. 多列索引,不使用第一部分索引失效,遵循最左原则
3. like 以%开头
4. 查询为字符串,一定要用‘’引用
5. 全表扫描比索引快
6. 负向条件查询不使用索引,可使用in替代 <> /not in /not extsts/not like
7. 查询条件中计算不会命中索引
2. 尽量使用数值
3. 使用定长而非变长
4. 使用in (小范围)、exits(大范围)exists(true)
5. 使用like时右匹配
6. 尽量使用btween and ,不适用><,mysql前闭后开,Oracle前闭后闭
7. 查询条件不要用函数
8. 过滤条件大的放最后面
很多人说这个不影响,但在嵌套查询中,同样的查询条件如果顺序不一样,有时候查询的数据也不一样。而且sql解析时也是从后到前的顺序。所以这个优化不能忽视。
注意:
count(列) count(常量) count(distinct col1,col2) 会丢失为null的数据,使用count(*)
使用select查询不等于 <> / != 会丢失null的数据
sum(column) 会返回结果为null而非0
数据库连接池配置数
连接数 = ((核心数 * 2) + 有效磁盘数)
例:4核i7数据库服务器的连接池大小应该为((4 * 2) + 1) = 9
池大小= T n x(C m - 1)+ 1
其中T n是最大线程数,C m是单个线程持有的最大同时连接数。
例:想象三个线程(T n = 3),每个线程需要四个连接来执行某些任务(C m = 4)。确保永远不会出现死锁所需的池大小是:
泳池大小= 3 x(4 - 1)+ 1 = 10
重点:这不一定是最佳池大小,而是避免死锁所需的最小值。
Sql 查询语句优化的更多相关文章
- sql查询语句优化
http://www.cnblogs.com/dubing/archive/2011/12/09/2278090.html 最近公司来一个非常虎的dba 10几年的经验 这里就称之为蔡老师吧 在征得 ...
- SQL查询语句优化的实用方法
查询语句的优化是SQL效率优化的一个方式,可以通过优化sql语句来尽量使用已有的索引,避免全表扫描,从而提高查询效率.最近在对项目中的一些sql进行优化,总结整理了一些方法. 1.在表中建立索引,优先 ...
- Mysql常用30种SQL查询语句优化方法
出处:http://www.antscode.com/article/12deee70111da0c4.html 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使 ...
- MySQL 常用30种SQL查询语句优化方法
1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...
- sql查询语句优化需要注意的几点
为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设法对之进行简化. 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN) 2)考虑使用临时表或表变量存放中间结果. ...
- 索引优化、Sql查询语句优化
工作中我们经常会遇到系统查询慢的情况,一般我们会采取好多方法进行优化,如建立索引,优化查询Sql,分表,规范数据表结构设计,调整数据库参数(内存分配.缓存等),增加硬件配置,优化网络环境等.下面介绍两 ...
- 深入MySQL(四):MySQL的SQL查询语句性能优化概述
关于SQL查询语句的优化,有一些一般的优化步骤,本节就介绍一下通用的优化步骤. 一条查询语句是如何执行的 首先,我们如果要明白一条查询语句所运行的过程,这样我们才能针对过程去进行优化. 参考我之前画的 ...
- 浅谈SQL优化入门:1、SQL查询语句的执行顺序
1.SQL查询语句的执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_ ...
- oracle中sql查询语句的执行顺序
查询语句的处理过程主要包含3个阶段:编译.执行.提取数据(sql查询语句的处理主要是由用户进程和服务器进程完成的,其他进程辅助配合) 一.编译parse 在进行编译时服务器进程会将sql语句的正文放入 ...
随机推荐
- [hdu5379]Mahjong tree
一棵子树的每一个儿子相当于划分一个区间,同时这些区间一定要存在一个点连续(直接的儿子),因此每一棵树最多只有两个儿子存在子树,并且这两个儿子所分到的区间一定是该区间最左和最右两段,所以ans*=(so ...
- vue实现聊天+图片表情功能
项目需求是这样的:要求实现类似于微信聊天一样,表情+文字效果 "文字效果" 表情包三种方案 表情包的实现其实可以分为以下三种情况: 表情包:点击表情--直接发送大表情(这种方案其实 ...
- 【Azure API 管理】在APIM 中添加 log-to-eventhub 策略,把 Request Body 信息全部记录在Event Hub中
问题描述 根据文档 https://docs.azure.cn/zh-cn/api-management/api-management-howto-log-event-hubs, 可以将Azure A ...
- Codeforces 1603D - Artistic Partition(莫反+线段树优化 dp)
Codeforces 题面传送门 & 洛谷题面传送门 学 whk 时比较无聊开了道题做做发现是道神题( 介绍一种不太一样的做法,不观察出决策单调性也可以做. 首先一个很 trivial 的 o ...
- LOJ 3066 - 「ROI 2016 Day2」快递(线段树合并+set 启发式合并)
LOJ 题面传送门 人傻常数大,需要狠命卡--/wq/wq 画个图可以发现两条路径相交无非以下两种情况(其中红色部分为两路径的重叠部分,粉色.绿色的部分分别表示两条路径): 考虑如何计算它们的贡献,对 ...
- 【R方差分析】蛋白质表达量多组比较
初始数据类似: 蛋白质组数据虽不是严格的正态分布,但目前最常用的检验方法还是T检验(两组比较)和方差分析(多组比较).这个话题值得深究,这里不展开. 主要是求多个蛋白的Pvalue值或FDR,用于差异 ...
- Docker初试
1. docker是啥? 自行Google或百度去... https://yeasy.gitbooks.io/docker_practice/introduction/what.html 重要概念: ...
- urllib的基本使用介绍
1. urllib中urlopen的基本使用介绍 1 ### urllib中urlopen的基本使用介绍 2 3 ## urlopen的基本用法(GET请求) 4 import urllib.requ ...
- 编程艺术第十六~第二十章:全排列/跳台阶/奇偶调序,及一致性Hash算法
目录(?)[+] 第十六~第二十章:全排列,跳台阶,奇偶排序,第一个只出现一次等问题 作者:July.2011.10.16.出处:http://blog.csdn.net/v_JULY_v. 引言 ...
- idea安装插件 JClassLib Bytecode viewer
目录 idea安装插件 JClassLib Bytecode viewer 安装过程 使用 idea安装插件 JClassLib Bytecode viewer IDEA 中安装 jClassLib ...