2015-12-24 92 views
-2

我有MYISAM表,有60 000 000行。它有很多INSERTS和一些选择(不是更新)。优化MySQL大表

执行插入块读取(明显)。

我只读取1%的行,其他99%的行将永远不会读取。

我想优化这个。我认为这是一个很好的方式来创建只有流行的SELECT的重复表。

是否有任何现成的解决方案呢?我正在PHP + MySQL工作。

+2

发布表模式,使用索引进行快速搜索 –

+1

如果您有一个auto_increment主键,以便INSERT全部转到表的结尾,并且您在SELECT的WHERE子句中使用的列的合适索引你不应该有任何问题。 – SeanN

+1

你怎么知道哪些行很受欢迎?如果大部分存储的数据都不会被查询,那么为什么将它们存储在第一位呢? – Shadow

回答

0

如果您有办法找到那些不活动的行,例如,您可以使用cronjob将INSERT...SELECTDELETE表中的非活动行复制到另一个表中。如果这些行有一定的时间戳记范围。这使您能够在不影响大多数其他查询的性能的情况下查找这些行。

+0

为什么要另一个架构? – Shadow

+0

因此,当查询在原始模式上运行时,不需要通过庞大的表进行查找。或者这是我的错误理解? – SOFe

+0

1.如果这些行可以被识别,我们不知道。 2.即使你可以识别这样的行,如果查询只需要带有流行记录的表或者持有不活动表的表,那么你如何提前区分? 3.您不需要将它们移动到不同的模式,只需将它们移动到不同的表格。 – Shadow