- from 子句 --> 执行顺序为从后往前、从右到左
表名(最后面的那个表名为驱动表,执行顺序为从后往前, 所以数据量较少的表尽量放后。 - where 子句 --> 执行顺序为自下而上、从右到左
将可以过滤掉大量数据的条件写在where的子句的末尾性能最优 - group by 和 order by 子句执行顺序都为从左到右
- select子句 --> 少用*号
- 避免产生笛卡尔积
- 避免使用*
- 用where子句替换having子句
- 用exists、not exists和in、not in相互替代:原则是哪个的子查询产生的结果集小,就选哪个
- 使用exists替代distinct
- 避免隐式数据类型转换
- 使用索引来避免排序操作
- 尽量使用前端匹配的模糊查询
- 不要在选择性较低的字段建立索引
- 避免对列的操作
- 尽量去掉"IN","OR"
- 尽量去掉"<>"
- 避免在索引列上使用IS NULL或者NOT
- 批量提交sql
SQL 优化
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FRO...