探寻BTree 索引对sql 优化影响
从一道题開始分析:
如果某个表有一个联合索引(c1,c2,c3,c4)一下——仅仅能使用该联合索引的c1,c2,c3部分
A where c1=x and c2=x and c4>x and c3=x
B where c1=x and c2=x and c4=x order by c3
C where c1=x and c4= x group by c3,c2
D where c1=? and c5=? order by c2,c3
E where c1=? and c2=? and c5=?
order by c2,c3
有谁知道以下A-E是否能能够使用索引!
!为什么?
OK;開始
创建表:
insert into t
values
('a1','a2','a3','a4','a5'),
('b1','b2','b3','b4','b5');
插入数据:
insert into t
values
('a1','a2','a3','a4','a5'),
('b1','b2','b3','b4','b5');
加入索引:
alter table t add index c1234(c1,c2,c3,c4);
对第一种情况:说明c1,c2,c3。c4被使用
稍作改变:
使用group by 一般先生成暂时文件。在进行排序
order by 哪?同上面类似啦
略微改变一下,分析:知道原理都非常easy啦!
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnV5aW5nZmVpODg4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
上面问题答案是多少?反正我是不知道!
总结规律可得:
探寻BTree 索引对sql 优化影响的更多相关文章
- 正确使用索引(sql优化),limit分页优化,执行计划,慢日志查询
查看表相关命令 - 查看表结构 desc 表名- 查看生成表的SQL show create table 表名- 查看索引 show index from 表名 使用索引和不使用索引 由 ...
- Oracle 建立索引及SQL优化
数据库索引: 索引有单列索引,复合索引之说,如果某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引.数据库索引主要进行提高访问速度. 建设原则: 1.索引应该经 ...
- SQL进阶-索引设置&sql优化
一.索引设置 1.索引的设置原则 经常出现在WHERE条件.关联条件中的字段作为索引字段: 在满足查询需求的前提下,应尽可能少的创建索引:(对于一个组合索引,可以满足以组合索引左边的一部分字段的查询需 ...
- 面试题: mysql 数据库已看 sql安全性 索引 引擎 sql优化
总结的一些MySQL数据库面试题 2016年06月16日 11:41:18 阅读数:4950 一.sql语句应该考虑哪些安全性? (1)防止sql注入,对特殊字符进行转义,过滤或者使用预编译的sql语 ...
- 全局索引与分区索引对于SQL性能影响的比较
KingbaseES 提供了对于分区表 global index 的支持.global index 不仅提供了对于唯一索引功能的改进(无需包含分区键),而且在性能上相比非global index (l ...
- mysql优化 | 存储引擎,建表,索引,sql的优化建议
个人对于选择存储引擎,建表,建索引,sql优化的一些总结,给读者提供一些参考意见 推荐访问我的个人网站,排版更好看: https://chenmingyu.top/mysql-optimize/ 存储 ...
- 数据库的规范和SQL优化技巧总结
现总结工作与学习中关于数据库的规范设计与优化技巧 1.规范背景与目的 MySQL数据库与 Oracle. SQL Server 等数据库相比,有其内核上的优势与劣势.我们在使用MySQL数据库的时候需 ...
- SQL高级优化(四)之SQL优化
SQL优化 一.SQL优化简介 解释:对于特定的要求,使用更有的SQL策略或索引策略,以达到让结果呈现的时间更短,从而提升操作效率的过程就是SQL优化. SQL优化包含在数据库级别优化中.我们平常所说 ...
- MySQL(逻辑分层,存储引擎,sql优化,索引优化以及底层实现(B+Tree))
一 , 逻辑分层 连接层:连接与线程处理,这一层并不是MySQL独有,一般的基于C/S架构的都有类似组件,比如连接处理.授权认证.安全等. 服务层:包括缓存查询.解析器.优化器,这一部分是MySQL核 ...
随机推荐
- Java如何进行异常处理
关键字:throws.throw.try.catch.finally的用法 Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口.在Java中,每个异常都是一个对象,它 ...
- 测试 markdown
PHP 标量类型与返回值类型声明 标量类型声明 默认情况下,所有的PHP文件都处于弱类型校验模式. PHP 7 增加了标量类型声明的特性,标量类型声明有两种模式: 强制模式 (默认) 严格模式 标量类 ...
- 【java】代码优化点
1.对数据库数据的计数统计,尽量在数据库查询时候就使用count()进行统计,避免返回List到项目中统计List大小 2.对于数据库中表中字段数据过长,例如存储的是text类型而不是verchar类 ...
- 在matlab中clear,clc,clf,hold作用介绍
clear 是清变量: clc 只清屏: clf 清除图形窗口上的旧图形: hold on 是为了显示多幅图像时,防止新的窗口替代旧的窗口: close 关闭所有显示的图像.
- UIButton中的三个UIEdgeInsets属性
接着昨天的 UIButton中的三个UIEdgeInsets属性 ,今天我们具体谈谈UIButton的contentEdgeInsets.titleEdgeInsets.imageEdgeInsets ...
- LaTeX 的对参考文献的处理
LaTeX 的对参考文献的处理实在是非常的方便,我用过几次,有些体会,写出来供大家 参考.当然,自己的功力还不够深,有些地方问题一解决就罢手了,没有细究. LaTeX 对参考文献的处理有这 ...
- jenkins的slave没有执行build,slave执行build失败
1.slave的build配置如下 2.但是从控制台输出日志来看,pre steps和post steps都执行了,但是build没有执行 3.最后的错误信息如下: ERROR: Failed to ...
- requests访问https网站
如果报证书校验失败的问题,可以去除证书校验1 import requests requests.get('https://www.zhihu.com/',verify=False)
- grep:字符串查找
转自: http://www.cnblogs.com/peida/archive/2012/12/17/2821195.html Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达 ...
- Tomcat 没有自动解压webapp下的war项目文件问题
默认选择的tomcat安装在了C盘下的C:\Program Files下 所以webapp文件也在C盘下 选择启动tomcat时 我选择了 bin下的 Tomcat.exe 显示成功启动 打开项目网站 ...