【发布时间】:2015-05-17 12:24:41
【问题描述】:
我的网站上有一个 AJAX 搜索工具,当我在实时网站中搜索某些内容时,直到结果出现(表格中的条目不超过 20 个)页面会在短时间内冻结,其他地方都无法点击在网站上,但它不会冻结计算机。我可以点击浏览器上的其他标签等。
我在 MySQL/InnoDB 中使用这个查询,运行需要 0.031 秒:
select * from members m where
memberID LIKE '%$keyword%' OR
memberName LIKE '%$keyword%' AND
memberTypeID=2;
我认为这与与服务器的连接有点相关,与服务器的性能有点相关。我该如何改进?
我使用 Bootstrap 分页将所有数据放在一个分页表中,该表具有搜索、排序、页面、每页条目数量选项,所有这些都在客户端完成。
【问题讨论】:
-
这是当前在您的本地计算机上运行的站点吗?如果进行搜索的繁重工作是将负载放在您自己的 CPU 上,请记住,一旦您上线,该负载将放在不同的服务器上,而且 CPU 很可能比您的开发机器的处理器更好。跨度>
-
这短短的时间有多长?您正在运行的查询是什么导致它?您使用的是什么数据库服务器?
-
halfer,不是我自己的CPU。它是一个实时服务器。查询类似于:“select * from members m where memberID LIKE '%$keyword%' OR memberName LIKE '%$keyword%' AND memberTypeID=2;”。我正在使用 MySQL 服务器和 php 服务器(都在同一台服务器上运行)引擎是 InnoDB ...
-
运行需要多长时间,确切地说)?前面带有通配符的 LIKE 相对很慢,但如果您的表中只有 20 行,则不会。 (注意:在您的实时环境中的 MySQL 控制台中尝试此操作,它会为您计时)。
-
当我在 MySQL Workbench 上运行 sql 时,查询耗时 0.031 秒。在网站上,冻结需要 2-3 秒。