分析sql查询慢

888阅读 0评论2012-07-04 nba76ers
分类:Mysql/postgreSQL

数据库优化:

有一张表PRODUCT(ID,NAME,PRICE,COUNT);在执行一下查询的时候速度总是很慢;

SELECT * FROM PRODUCT WHERE PRICE=100;

在price字段上加上一个非聚簇索引,查询速度还是很慢。

1,分析查询慢的原因。

2,如何进行优化。


一、很有可能是PRICE字段数据类型定义不是数字型,所以查询时会隐含to_num(PRICE)=100这个条件,所以无法使用任何索引。题目中没提及具体RDBMS(是mssql? mysql? oracle? ...),但据我所知 mssql 就是如上述原因会导致查询变慢。其实要找原因也不难,只要显示查询计划,几乎一眼就可以看出原因了。


二、可以通过 explain sql 来查找原因.

查询慢的原因可能有

1:price的字段类型不对,例如设置为了 varchar,当使用price=100 这样的条件时无法使用price字段上建立的索引

2、查询出的记录数过多,例如超过1000条,后面可以加 limit 限制返回的记录数

3、查询结果中某个字段的内容特别多,例如name字段是text类型含有上万个字符,可以只返回需要的字段






上一篇:聚集索引 与非聚焦索引
下一篇:帖子回复表设计