MySQL优化-SQL语句优化

SQL语句优化

 

SELECT语句优化

除了select语句,对查询的调整技术还可以应用于:create table…as select, insert into…select, delete子句里的where子句。

NDB 存储引擎也叫NDB Cluster 存储引擎,主要用于MySQLCluster 分布式集群环境,Cluster 是MySQL 从5.0 版本才开始提供的新功能。该存储引擎对join的优化?

优化查询需考虑的主要因素:

1、  检查是否可以增加索引。为了避免浪费磁盘空间,可以使用复合索引。

2、  函数调用会消耗大量时间。取决于查询方式,结果集的每一行都会调用函数,或表中的每一行会调用函数。

3、  最小化全表扫描的查询数量。

4、  为了让优化器有足够的信息构建执行计划,定期使用ANALYSE TABLE更新表统计信息。

5、  对于不同的存储引擎,使用不同的优化方式。

6、  优化只读的InnoDB表。待确认。

7、  避免难以理解的查询转换,特别是优化器可以自动做相似的转换。

8、  如果查询性能不能通过基本的指导路线解决,使用EXPLAIN分析执行计划,调整索引,where子句,join子句。

9、  调整配置文件中的缓存大小。

10、考虑锁。


1、 where子句

1)避免不必要的括弧

((a AND b) AND c OR(((a AND b) AND (c AND d))))

-> (a AND b AND c) OR (a ANDb AND c AND d)

2)常量折叠

(a<b and b= c) and a=5

-> b>5 and b=c and a=5

3)删除常量条件

(b>5 and b=5) or (b=6 and 5=5) or (b=7 and 5=6)

-> b=5 or b=6

4)对存储引擎为MyISAM或MEMORY的表,只涉及一个表时count(*)直接返回结果

5)检测是否有值为false的常量表达式

6)如果没有使用group by或聚集函数(count, min),having合并到where里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值