我需要一些建议。为了更一般,我解释下面的例子: 我有MySQL InnoDB表'posts'的字段:
`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)
有不和之处
`id` - PRIMARY
`category` - INDEX
`modified_on` - INDEX
(`enabled`,`deleted`) - INDEX
表包含10-15百万条记录。我在做查询
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}
对MySQL服务器发出50-100个并发请求时,它会关闭。 每个查询在0.1-0.5s内执行,它取决于limit子句。
我是否需要单独的“类别”索引,因为有时我正在浏览所有类别的所有帖子,或者我可以将“类别”添加到(enabled
,deleted
)索引并传递ID所有类别(约200)每次我需要所有类别的帖子?
哪些解决方案可以提高此类查询的速度?
提前致谢。
答案 0 :(得分:1)
我认为你应该在包含'enabled'和'deleted'的索引中添加类别。
希望它会缩短您的查询时间