php - sql查询返回时间是随机的

标签 php mysql sql

在网站上显示数据库结果时,我遇到了一个奇怪的问题。我的数据库有 230 万行,并且有全文索引。我用它作为查询:

SELECT * 
FROM $tbl_name 
WHERE MATCH(DESCRIPTION) 
AGAINST ('$search') 
LIMIT $start, $limit.

结果使用 php 分页显示,这就是我使用 limit 的原因。通过 phpadmin 在实际数据库服务器上运行查询始终返回,时间低于 100 毫秒。尽管查询时间低于 100 毫秒,但仍然可能需要 2 分钟,因为当我运行查询时,它会卡在“正在加载”状态。当网页运行查询时,加载时间从 300 毫秒到 2 分钟不等。基于此,我使用 Chrome 内置的开发者控制台,发现我的 php 脚本的接收时间是问题所在。将表复制到新表并创建新的全文索引解决了 2 分钟的问题,然后又变得异常缓慢。我正在使用 hostgator 顺便说一句,我猜这就是问题所在。如果有人知道为什么它如此随机,我将不胜感激,因为 2 分钟运行搜索是 Not Acceptable ^.^,非常感谢!

最佳答案

如果这是共享网络服务器,则可能是其他人的站点使服务器陷入困境。也许您需要一个专用服务器?

您还可以尝试对数据库反复运行查询几次,看看在前 2 分钟后性能是否会下降,就像您通过 php 注意到的那样。

此外,通常 200 万行对于 MySQL 来说已经很多了,而且对于带有 MySQL 的 FULLTEXT 来说也是如此。此时您可能需要考虑使用合适的搜索引擎,例如 Solr。

关于php - sql查询返回时间是随机的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24793830/

相关文章:

php - 如何在 smarty 模板文件中定义变量?

php - MySQL + PHP : Select all results from one table for each result of another

php - 从表中选择继续日期

mysql - MySQL 的 ADO.NET 数据服务

sql - 无损连接分解两个以上关系

php - 使用 PHP 正则表达式验证用户名

c# - 在存储过程中使用动态SQL?

mysql - SQL语句中两行的switch值

sql - 试图在 HIVE 中找到 select 语句的最大值

SQL - 像和通配符,不是预期的结果