Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2794824
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: Mysql/postgreSQL

2012-07-04 13:50:26

数据库优化:

有一张表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类型含有上万个字符,可以只返回需要的字段






阅读(801) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~