首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LIMIT、ORDER BY、bool子句和IN子句优化MySQL查询

问使用LIMIT、ORDER BY、bool子句和IN子句优化MySQL查询
EN

Stack Overflow用户
提问于 2013-03-05 20:46:30
回答 1查看 165关注 0票数 0

我需要一些建议。为了更通用,我在下面的例子中进行了解释:我有一个带有字段的MySQL InnoDB表'posts‘:

代码语言:javascript
复制
`id` - INT UNSIGNED AUTOINCREMENT
`title` - VARCHAR(100)
`abstract` - TEXT #can be converted to VARCHAR(2048)
`content` - TEXT #text + thml tags
`category` - SMALLINT
`created_on` - DATETIME
`modified_on` - DATETIME
`enabled` - TINYINT(1)
`deleted` - TINYINT(1)

打开inexes

代码语言:javascript
复制
`id` - PRIMARY
`category` - INDEX
`modified_on` - INDEX
(`enabled`,`deleted`) - INDEX

表包含1000-1,500万条记录。我在做查询

代码语言:javascript
复制
SELECT id, title, abstract FROM posts 
WHERE enabled = 1 AND deleted = 0 
    AND category IN ( {id's} )
ORDER BY modified_on DESC 
LIMIT {offset}, {limit}

当有50-100个并发请求发送到MySQL服务器时,它就会宕机。每个查询的执行时间是0.1-0.5s,这取决于limit子句。

我是否需要为'category‘建立单独的索引,因为有时我需要浏览所有类别的所有帖子,或者我可以将'category’添加到(enabled,deleted)索引,并在每次需要所有类别的帖子时传递所有类别的id (~200)?

有什么解决方案可以提高这种查询的速度?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-03-05 20:50:27

我认为你应该在索引中添加包含“已启用”和“已删除”的类别。

希望它能减少您的查询时间

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15224184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档