大型MySQL表-索引崩溃

大型MySQL表-索引崩溃,mysql,datetime,indexing,partitioning,Mysql,Datetime,Indexing,Partitioning,我有一个约100GB的MySQL表,有近10亿行。它只有8列,其中一列是索引的DateTime,用于通过稀疏切片的“中间”查询进行的大多数查找 以前我在这个专栏上的索引工作得很好。。。但随着表格的持续增长,索引突然停止了工作。现在EXPLAIN在所有查询上显示“使用filesort”,我已经为内存池提出了所有适用的my.conf值,但都没有用 钥匙能处理的最大值是多少?要解决这个问题吗 如有任何见解,将不胜感激。谢谢 您可以尝试通过提示强制使用索引。 结账一个很快的例子是 SELECT * FR

我有一个约100GB的MySQL表,有近10亿行。它只有8列,其中一列是索引的DateTime,用于通过稀疏切片的“中间”查询进行的大多数查找

以前我在这个专栏上的索引工作得很好。。。但随着表格的持续增长,索引突然停止了工作。现在EXPLAIN在所有查询上显示“使用filesort”,我已经为内存池提出了所有适用的my.conf值,但都没有用

钥匙能处理的最大值是多少?要解决这个问题吗


如有任何见解,将不胜感激。谢谢

您可以尝试通过提示强制使用索引。 结账一个很快的例子是

SELECT * FROM table1 USE INDEX (col1_index)
  WHERE col1 BETWEEN date1 AND date2;
但我不认为这是你的主要问题。为了预见你将来可能遇到的问题,我强烈建议你仔细阅读

在某些方面,它指出

If you do encounter a full-table error, there are several reasons why it might have occurred: 
...
You are using MyISAM tables on an operating system that supports files only up to 2GB in size and you have hit this limit for the data file or index file.
看来你不是这样的。但在这一点上你可以考虑一些可能性。
我还强烈建议您快速搜索关键字“myisampack”。

如果可以,请停止mysql服务器,然后转到数据文件夹并执行

myisamchk -r <table_name>
myisamchk-r

myisamchk-r-v-f
那会修好你的桌子的。您也可以尝试使用

REPAIR TABLE <table_name>
维修表

更多信息和

表中有多少行?你用的是什么发动机?InnoDB还是MyISAM?我在第一句话中说——将近10亿行。我是MyISAM。谢谢你的索引适合内存吗?显示您的表状态和“键\缓冲区\大小”您是否尝试对表执行优化操作?可能需要对索引进行排序。也许您在查询中做了一些更改?添加了一个影响查询计划的ORDERBY子句。哇,真的很简单-我不敢相信我没有尝试过。非常感谢你的帮助!
REPAIR TABLE <table_name>