优化SQL查询的效率

在数据量很大的情况下,不同的SQL语句,消耗的时间相差很大,下面方法可以提高查询的效果:

1) 在select子句中尽量避免使用*

在select子句中,“*”是选择全部数据的意思。比如语句:“select * from 成绩表”,意思是选择成绩表中所有列的数据。

所有要明确需要哪些列的数据,就提取哪些列的数据。尽量少用*来获取数据。

另外,如果将select * 用于多表联结,会造成更大的成本开销。

2) where子句比较符号左侧避免函数

尽量避免在where条件子句中,比较符号的左侧出现表达式、函数等操作。因为这会导致数据库引擎进行全表扫描,从而增加运行时间。

例:
where 分数 + 5 > 90 (表达式在比较符号的左侧)

优化方法:

where 分数 > 90 – 5(表达式在比较符号的右侧)

3)尽量避免使用in和not in

in和not in也会导致数据库进行全表搜索,增加运行时间。

例:
select 学号, 分数from 成绩表 where 学号 in (6, 9)

优化方法:

select 学号, 分数from 成绩表 where 学号 between 6 and 9

4) 尽量避免使用or

or同样会导致数据库进项全表搜索。在工作中,如果你只想用or从几十万语句中取几条出来,是非常划不来的,怎么办呢?下面的方法可替代or。

例:
select 学号 from 成绩表 where 分数= 100 or 分数= 90

优化方法:

select 学号 from 成绩表 where 分数= 100

union

select 学号 from 成绩表 where 分数= 90

5.使用limit子句限制返回的数据行数

如果前台只需要显示15行数据,而你的查询结果集返回了1万行,那么这适合最好使用limt子句来限制查询返回的数据行数。

你可能感兴趣的:(数据库)