求sql 查询语句加where 和 ORDER BY 后耗时优化 50

网站下的某数据表,数据量才7万条,houseid为主键,infocat有索引,基数为5,加了一个简单的where和ORDERBY(时间字段)查询时间需要几百毫秒,感觉慢了... 网站下的某数据表,数据量才7万条,houseid为主键,infocat有索引,基数为5,加了一个简单的where 和 ORDER BY (时间字段)查询时间需要几百毫秒,感觉慢了,求优化语句,具体测试如下。
不加任何条件
SELECT houseid FROM `h_house` ORDER BY houseid DESC LIMIT 0,30;
SELECT houseid FROM `h_house` ORDER BY houseid DESC LIMIT 0,300;
//耗时: 0.001s //耗时: 0.002s

1、SELECT houseid FROM `h_house` WHERE infocat=1 ORDER BY houseid DESC LIMIT 0,30; // 耗时: 0.31s

2、SELECT houseid FROM `h_house` ORDER BY edittime DESC LIMIT 0,30;
//耗时: 0.32s

3、SELECT houseid FROM `h_house` WHERE infocat=1 ORDER BY houseid DESC LIMIT 0,30; //耗时: 0.31s

对sql数据库比较熟悉的,请给个优化语句,sql查询时间在几十毫秒内,谢谢!
infocat是有索引的(才5个),查询耗时300多毫秒,结果我把infocat索引去掉了,速度就正常了。
SELECT houseid FROM `h_house` WHERE infocat=1 ORDER BY houseid DESC LIMIT 0,30; // 去掉infocat索引 ,耗时: 0.002s
展开
 我来答
tjrmgs
2018-05-21 · TA获得超过5764个赞
知道大有可为答主
回答量:2161
采纳率:94%
帮助的人:1011万
展开全部
目测题主写出的这几条语句未发现特别消耗系统资源的运算,都是一些规范的写法,可以说没有什么可以优化的,如果需要让它们运行的更快一些应该从设置索引这个方向去解决。
最前两条语句无筛选、用字段`houseid`排序运算,毫秒级耗时都非常快,该字段应该建立了索引并被利用。
语句1. 用字段infocat=1进行筛选,尽管还是用字段`houseid`排序运算,但是耗时立即增加到数百毫秒级,显然字段`infocat`没有可被利用的索引。建议为字段infocat添加索引,这样相信此语句的运行速度会大幅提高。
语句2. 用字段`edittime`排序,无筛选,耗时较用字段`houseid`排序的耗时从毫秒级大幅增加到3百多毫秒,显然字段`edittime`也无可利用的索引。如为此字段添加索引,此语句的运行速度可提高一个数量级。
语句3跟语句1.情况一样,如果字段`infocat`有索引,其运行速度可大幅提高。如果筛选后返回的行特别多,那么再为字段`edittime`加索引可为提高运行速度加分(筛选后如返回的行数目有限,则字段`edittime`有无索引对提高速度帮助作用不大)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式