数据库查询条件优化方案

前言

数据库中的很多查询都是可以优化的,本文记录了博主数据库用到的优化方案,希望能给大家提供一些思路。

1.使用instr代替like

instr函数也有三种情况:
a. instr(字段,'关键字') > 0    相当于 字段like '%关键字%':        表示在字符串中包含‘关键字’
b. instr(字段,'关键字') = 1    相当于 字段like '关键字%'            表示以‘关键字’开头的字符串
c. instr(字段,'关键字') = 0    相当于 字段not like '%关键字%'  表示在字符串中不包含‘关键字’

2.使用exists代替in

这个优化方案不是绝对的,如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in, 反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists

3.使用not exists代替not in

如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。

4.使用union all代替or

原文地址:https://www.cnblogs.com/shuhao66666/p/15196323.html