我在 MyISAM 数据库上运行了大约 50,000 个查询,但是查询运行的时间越长,它变得越慢。例如,一开始可以在一秒钟内完成 20 行,到最后它是每秒完成 5 行。发生这种情况是因为 MyISAM 在每次插入后锁定表还是其他原因?
我想我必须使用 MyISAM,因为我正在使用带有全文索引的 match()against(),据我所知只有 MyISAM 支持。是否可以使用具有此功能的 InnoDB 或其他一些 DB 类型,或者是否有办法加快查询,因为当前查询的执行时间约为 45 分钟。
我预计会有很多关于我的查询结构的答案,我将三个具有不同列的表整理到一个表中,并尝试将 3 个不同的行匹配在一起以形成一个“超级表”,因此我需要做很多匹配( )against()、preg_match、选择和循环以准确匹配它们。为了优化我的循环,我使用 PDO 和准备好的语句,但这只会将查询时间缩短到我上面提到的时间,使用 mysql_connect 和标准函数接近一个小时。
请记住,查询一开始并不慢,只有在完成大约 10,000 次查询之后,它才会明显变慢,并且随着它做的更多,它变得越来越慢,直到它达到任何服务器公司接受的不合理水平,谁能给我一个解法?