我有MYISAM表,有60 000 000行。它有很多INSERTS和一些选择(不是更新)。优化MySQL大表
执行插入块读取(明显)。
我只读取1%的行,其他99%的行将永远不会读取。
我想优化这个。我认为这是一个很好的方式来创建只有流行的SELECT的重复表。
是否有任何现成的解决方案呢?我正在PHP + MySQL工作。
我有MYISAM表,有60 000 000行。它有很多INSERTS和一些选择(不是更新)。优化MySQL大表
执行插入块读取(明显)。
我只读取1%的行,其他99%的行将永远不会读取。
我想优化这个。我认为这是一个很好的方式来创建只有流行的SELECT的重复表。
是否有任何现成的解决方案呢?我正在PHP + MySQL工作。
如果您有办法找到那些不活动的行,例如,您可以使用cronjob将INSERT...SELECT
和DELETE
表中的非活动行复制到另一个表中。如果这些行有一定的时间戳记范围。这使您能够在不影响大多数其他查询的性能的情况下查找这些行。
发布表模式,使用索引进行快速搜索 –
如果您有一个auto_increment主键,以便INSERT全部转到表的结尾,并且您在SELECT的WHERE子句中使用的列的合适索引你不应该有任何问题。 – SeanN
你怎么知道哪些行很受欢迎?如果大部分存储的数据都不会被查询,那么为什么将它们存储在第一位呢? – Shadow