技术开发 频道

浅谈MySQL数据库优化

3.2 优化WHERE子句

MYSQL优化器支持大量的优化工作,详细信息我们需要参看MYSQL联机文档,而且MYSQL优化器每个版本都在进行不断完善。我们的原则就是尽量简化WHERE条件:去除不必要的括号,去除重叠WHERE条件,尽量减少访问的范围等。我们下边给出一个WHERE条件充分利用索引的例子。

和ORACLE等数据库一样,如果我们对where条件后边的字段加上了函数处理的话,将不能利用索引,因此一定要注意把函数处理都要放在后边来处理。
mysql> explain select * from test where id/2<100\G;
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: test
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 1534755
Extra: Using where
1 row in set (0.78 sec)

ERROR:
No query specified

mysql> explain select * from test where id<100*2\G;
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: test
type: range
possible_keys: idx_test
key: idx_test
key_len: 4
ref: NULL
rows: 16296
Extra: Using where
1 row in set (0.09 sec)

ERROR:
No query specified

3.3其他优化

MYSQL文档中分别对于join、order by、group by等的优化都做了详细讲述,我们在这里就不给出具体的实例了,大家参考MYSQL联机文档。

 

 

0
相关文章