在日常的sql查询中为了保证查询高效率,常会对查询句子开展sql优化,下边整理的一些方法,有需求的可以参考一下。

  1.对查询开展优化的事宜,要尽量避免全表扫描仪,首先应该选择在 where 及 order by 涉及到的列上建立索引。

  2.应尽量避免在 where 子句上对字段开展 null 系数的分辨,否则会使模块舍弃引索而产生的全表扫描仪,如:

  select id from t where num is null

  能够在num字段上设置默认值,保证表中num字段列并没有null值,随后那样查询:

  select id from t where num=0


  3.应尽量避免在 where 子句选用!=或<>运算符,否则会使模块舍弃引索而产生的全表扫描仪。

  4.应尽量避免在 where 子句中应用 or 来联接标准,否则会造成模块舍弃引索而产生的全表扫描仪,如:

  select id from t where num=10 or num=20

  要这样查询:

  select id from t where num=10

  union all

  select id from t where num=20

  5.in 和 not in 也需要谨慎使用,也会导致全表扫描仪,如:

  select id from t where num in(1,2,3)

  针对连续不断的标值,可用 between 也就不用 in 了:

  select id from t where num between 1 and 3

  6.这类查询也可能导致全表扫描仪:

  select id from t where name like '�c%'

  7.应尽量避免在 where 子句上对字段开展关系式实际操作,这可能导致模块舍弃引索而产生的全表扫描仪。如:

  select id from t where num/2=100

  应改成:

  select id from t where num=100*2

  8.应尽量避免在where子句上对字段开展函数公式实际操作,这可能导致模块舍弃引索而产生的全表扫描仪。如:

  select id from t where substring(name,1,3)='abc'--name以abc开头的id

  应改成:

  select id from t where name like 'abc%'