我需要一些建议。更笼统地说,我在以下示例中进行了解释:我有 MySQL InnoDB 表“帖子”,其中包含以下字段:
`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
`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.5 秒内执行,它取决于限制子句。
我是否需要单独的“类别”索引,因为有时我正在浏览所有类别的所有帖子,或者我可以将“类别”添加到 ( enabled
, deleted
) 索引并在每次我需要来自所有类别的帖子时传递所有类别的 ID (~200)他们的?
哪些解决方案可以提高此类查询的速度?
提前致谢。