Php MySQL查询在删除后速度变慢

Php MySQL查询在删除后速度变慢,php,mysql,Php,Mysql,我有一个由两部分组成的PHP脚本 删除数据库中某些行的第一个命令 触发SELECT查询的第二个 第二个脚本单独运行大约需要0.2秒。当两部分都被处理时,第二部分需要5秒。下一次第二个脚本单独运行时,将返回到0.2秒 有什么线索吗?很可能是查询缓存了,所以第二次运行速度更快。如果添加到查询中,则应该能够确定缓存是否是一个因素。每次更新表时,表的查询缓存都会“失效” 结果是,对表的任何更新/删除/插入都将清除该表的查询缓存,并强制为下一次选择读取新磁盘。结果将是一个较慢的查询 这里有一个链接到 如果

我有一个由两部分组成的PHP脚本

  • 删除数据库中某些行的第一个命令
  • 触发SELECT查询的第二个
  • 第二个脚本单独运行大约需要0.2秒。当两部分都被处理时,第二部分需要5秒。下一次第二个脚本单独运行时,将返回到0.2秒


    有什么线索吗?

    很可能是查询缓存了,所以第二次运行速度更快。如果添加到查询中,则应该能够确定缓存是否是一个因素。

    每次更新表时,表的查询缓存都会“失效”

    结果是,对表的任何更新/删除/插入都将清除该表的查询缓存,并强制为下一次选择读取新磁盘。结果将是一个较慢的查询

    这里有一个链接到

    如果您的表非常大,您可能需要研究MyISAM表和单独的键缓存,以获得更好的读取性能。MyISAM=快速读取、快速写入、可怕的写入/写入并发性。InnoDB=读取速度一般,写入/更新的并发性良好


    --J Jorgenson--

    我假设您在该表上的所有索引都是在删除之后重建的。您可以发布mytable中显示索引的结果吗?如果在删除后等待几秒钟,
    SELECT
    是否快速运行?也就是说,运行delete,wait,然后运行select。实际上有一个索引:一个主键。但是,脚本的两部分之间没有等待时间。第二部分运行时是否重建索引?是否有办法在脚本的第二部分之前强制重建索引?强制脚本在这两部分之间等待实际上不是一个选项,因为整个脚本必须尽可能快地运行…暂停的目的是帮助确定重新编制索引是否是问题的可能原因-它不是解决方案。如果可以运行delete,请稍等片刻,然后运行select并发布结果,这可能有助于确定问题的原因。大约有多少条记录被删除,有多少条被选中,以及表中包含多少条记录?我想到了缓存,但似乎一旦一个查询运行得很快,另一个也会运行得很快。。。