Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-如何在大量删除后刷新表_Mysql - Fatal编程技术网

MySQL-如何在大量删除后刷新表

MySQL-如何在大量删除后刷新表,mysql,Mysql,我刚刚以以下形式运行了一个简单的删除查询: DELETE*FROM [db.table] WHERE id < [value]; 但是,如果按升序排序,我会立即返回结果,如下所示: SELECT*FROM [db.table] ORDER BY id DESC; SELECT*FROM [db.table] ORDER BY id ASC; 查询将在10分钟后超时。在我看来(这只是一个猜测),查询正在遍历我最近删除的行的所有ID,而从未获得最新的数据。可能吗 如何使“排序ASC”查询

我刚刚以以下形式运行了一个简单的删除查询:

DELETE*FROM [db.table] WHERE id < [value];
但是,如果按升序排序,我会立即返回结果,如下所示:

SELECT*FROM [db.table] ORDER BY id DESC;
SELECT*FROM [db.table] ORDER BY id ASC;
查询将在10分钟后超时。在我看来(这只是一个猜测),查询正在遍历我最近删除的行的所有ID,而从未获得最新的数据。可能吗


如何使“排序ASC”查询正常工作?我需要刷新一下吗?谢谢

在执行大的删除操作后,考虑运行MYSQL的
优化表

重新组织表数据和关联索引数据的物理存储,以在访问表时减少存储空间并提高I/O效率。对每个表所做的确切更改取决于该表使用的存储引擎


这里的文档:

我更喜欢使用这种智能方式设置自动增值:

DELETE * FROM [db.table] WHERE id < [value],
ALTER TABLE [db.table] AUTO_INCREMENT = [value];

你有这个字段的索引吗?是的,我相信这是一个索引类型的BTREE。听起来对吗?我在沙箱中的数据库副本上运行了optimize命令。这返回了一条消息,说“表不支持优化,改为重新创建+分析”。这告诉我什么?谢谢。这意味着你的表可能是innodb而不是MyISAM,而mySQL正试图以不同的方式优化你的表。
ALTER TABLE [db.table] CHANGE `id` `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT