问个优化问题,太菜了这都不懂

HelloChina 发布于 2012/07/01 19:00
阅读 478
收藏 1

数据库优化:

有一张表PRODUCT(ID,NAME,PRICE,COUNT);

在执行一下查询的时候速度总是很慢;

SELECT * FROM PRODUCT WHERE PRICE=100;

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

1,分析查询慢的原因。

2,如歌进行优化。

 

这是一道面试题,不会做 大家帮忙看下吧,让我学习学习下

加载中
0
王昊然
王昊然

不用*做查询条件,我就看出这么一个来

优化的话,分表?

HelloChina
HelloChina
积分不够 给不了有帮助 谢谢
HelloChina
HelloChina
对了 回答前 要先问下数据量 ,可以分区 分表 谢谢了
0
szf
szf

很有可能是PRICE字段数据类型定义不是数字型,所以查询时会隐含to_num(PRICE)=100这个条件,所以无法使用任何索引。

题目中没提及具体RDBMS(是mssql? mysql? oracle? ...),但据我所知 mssql 就是如上述原因会导致查询变慢。

其实要找原因也不难,只要显示查询计划,几乎一眼就可以看出原因了。

HelloChina
HelloChina
应该是mysql ,说得有道理, 谢谢了
0
酒逍遥
酒逍遥

表结构都没得...只有字段 咋个优化..

起码要把 字段类型,长度已建立的索引列出来把..

这样大家只能用猜的方式来帮你.效率很低的

HelloChina
HelloChina
题目就这样 谢谢你了
0
酒逍遥
酒逍遥

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

查询慢的原因可能有

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

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

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

返回顶部
顶部