SQL优化的思路及基本原则(mysql)
来源:互联网 发布:端口隔离 编辑:程序博客网 时间:2024/06/05 16:42
SQL优化的思路及基本原则(mysql)
SQL优化的思路:
1.优化更需要优化的sql;
2.定位优化对象的性能瓶颈:优化前需了解查询的瓶颈是IO还是CPU,可通过PROFILING很容易定位查询的瓶颈。
3.明确优化目标;
4.从Explain入手;
5.多使用profile;
SQL优化的基本原则:
1.永远用小结果集驱动大结果集;
From子句中sql解析顺序为从右向左,执行时会以最左边的表为基础表循环与右边表数据做笛卡尔积,所以以小结果集驱动能减少循环次数,从而减少对被驱动结果集的访问,从而减少被驱动表的锁定。
2.尽可能在索引中完成排序;
排序算法有两种:a.查出排序字段和行指针,排序,再通过行指针获得行数据所需列,返回结果集;b.取出所有排序列数据,在排序缓冲区中排完序直接返回结果集。
索引排序是利用索引的有序性对数据排序的。
3.只取出子集需要的colums
4.仅仅使用最有效的过滤条件;
5.尽可能避免复杂的Join和子查询;
索引的好处:
(1).提高数据检索效率,降低数据库的IO成本。
(2).降低数据排序成本:要求排序字段和索引键字段一致。
(3).降低数据分组成本:因为分组之前会先排序,同意如果分组字段与索引字段一致,会降低分组消耗的成本。
索引的弊端:
(1).索引是独立于基础数据的数据库对象,因此它会占用存储空间。
(2).数据新增、更新会导致索引的同步更新,所以会增加数据新增、更新所消耗的成本。
判断是否需要创建索引:
(1).较为频繁的作为查询条件的字段需要创建索引;
(2). 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件;
(3).更新非常频繁的字段不适合创建索引;
(4).不会出现在where子句中的字段不要创建索引;
索引语法:
(1).唯一索引
ALTER TABLE tableName ADD UNIQUE indexName (column);
CREATE UNIQUE INDEX indexName ON tableName (column);
(2).普通索引
ALTER TABLE tableName ADD INDEX indexName(column);
CREATE INDEX indexName ON tableName(column);
(3).主键索引
ALTER TABLE tableName ADD PRIMARY KEY (column);
(4).全文索引
ALTER TABLE tableName ADD FULLTEXT (column);
(5).组合索引
ALTER TABLE tableName ADD INDEX indexName(col1,col2,...);
阅读全文
0 0
- SQL优化的思路及基本原则(mysql)
- SQL优化的思路及基本原则(mysql)
- MySQL的SQL优化思路
- MySQL语句优化的基本原则
- MySQL语句优化的基本原则
- 高效SQL执行的基本概念及基本原则
- MySQL中创建及优化索引组织结构的思路
- mysql join的实现原理及优化思路
- MySQL中创建及优化索引组织结构的思路
- mysql join的实现原理及优化思路
- MYSQL优化的一些思路
- mysql服务器的优化思路
- 优化数据库的基本原则
- mysql启动及sql的优化
- mysql binlog日志优化及思路
- 带你深入了解MySQL语句优化的基本原则
- 带你深入了解MySQL语句优化的基本原则
- 带你深入了解MySQL语句优化的基本原则
- Android 利用 AsyncTask 异步读取网络图片
- 对hashmap中的value排序
- 08. Yii 2.0 数据库交互
- SpringBoot 整合Mybatis
- java.lang.RuntimeException: Unable to destroy activity
- SQL优化的思路及基本原则(mysql)
- spring boot自动配置
- Java 验证手机号码
- StoryBoard页面跳转方式 Show,Show Detail,Present Modally,Present as Popover
- vivado与modelsim的联合仿真(一)
- java 向txt中写入字符串的几种方式效率测试代码
- 彻底征服 Spring AOP 之 实战篇
- [book]《超越感觉》
- 小数进制转化 @ Python