当我运行一条mysql select语句时,会花费很长时间,因为我之前已经删除了大量的行。
有没有办法让表从底部开始扫描,而不是从顶部开始扫描?
发布于 2010-05-19 05:25:07
查询不会以任何特定顺序扫描表;如果它碰巧按顺序遍历特定索引(例如,范围扫描),它可能会这样做,这可能是因为您使用了order BY。
数据库并不是那样工作的。你不能以这种方式依赖他们的行为。
如果您正在进行全表扫描,预计会花费一些时间,特别是如果您最近删除了很多行。但是,如果您有很多行,则需要更长的时间。
确保查询改用索引。查看explain计划并确保它使用了索引。
发布于 2010-05-18 22:51:28
也许您需要为表添加一个额外的索引。偶尔发出优化表和分析表也不会有什么坏处。如果您有合适的索引,查询性能不会因为删除了行而受到影响,即使是大量的行。
https://stackoverflow.com/questions/2857720
复制相似问题