0

我有非常简单的 mysql 表,有 5 列,但有 500 万条数据。早些时候,当数据较少时,我的服务器负载非常少,但现在负载正在增加,因为数据超过 500 万,我预计到今年年底将达到 1000 万,因此服务器会更慢。我明智地使用了索引

结构非常简单,id 作为自动增量和主键,我仅根据 id 过滤数据,因为它是主键,所以会自动索引(我也尝试过索引它,但没有好处)

表A

   id   pid   title     app   get

我的查询是

    EXPLAIN SELECT * FROM tableA ORDER BY id DESC LIMIT 4061280 , 10

并解释说

 id      select_type    table    type   possible_keys   key    key_len    ref   rows            Extra
 1        SIMPLE       tableA    ALL      NULL         NULL      NULL     NULL  4700461       Using filesort

我不想遍历所有行,因为它会减慢我的服务器并为文件排序创建繁重的负载,因为它会在缓冲区或磁盘中创建临时文件。

请提出任何解决此问题的好主意。

当我的 id 被索引时,为什么它会遍历所有行并到达所需的行。它不能直接跳转到该行????

4

1 回答 1

0

假设您的 id 中没有“空白”(读取已删除的记录)..

SELECT * FROM tableA WHERE id > 4061279 and id <= 4061290 ORDER BY id DESC

好的下一步

SELECT * FROM tableA WHERE id <= 4061290 ORDER BY id DESC LIMIT 10
于 2013-10-25T18:28:15.453 回答