2

我知道这是一个有点模糊的问题,但哪种算法会更有效和/或“更快”?

搜索预加载的 JavaScript 名称数组或使用 MySQL 查询"SELECT NAME WHERE NAME LIKE '%VARIABLE%'?将使用 jquery AJAX 调用 MySQL 来访问 PHP 文件。

我网站的一些背景知识,它是一个主要面向移动用户的网站,并使用 jquery 和 php 的组合来提供内容。在这种情况下,用户将在约 22,000 个唯一名称的列表中搜索特定名称。

我还考虑过使用 LocalStorage 作为缓存来存储表,但这需要一个额外的(尽管成本可能更低?)验证/更新/加载缓存的步骤。

如果需要更多信息,请提前告诉我并感谢。

编辑:

一些额外的信息,用户可以并且可能会搜索多个非唯一值。例如:“Jane”的搜索值可以并且应该返回结果'Jane Smith', 'Janet Smith', 'Jane Doe', 'Janess Whatver', 'jfhfuhd_JANE_dfifhf, 'Blah'(不知道谁会有这样的名字,但如果它在数据库中并且他们搜索了 Jane,它应该与其他人一起返回)

4

2 回答 2

3

我会选择 MySQL。事实上,我什至不会考虑将两者进行比较。

数据库擅长处理数据:这是他们的工作。让他们去做。

将数据存储在本地有很多缺点:

  • 如果一条数据发生变化怎么办?您会再次将所有数据重新发布给所有客户吗?
  • 您必须首先将所有数据发送给所有客户端。
  • 客户是否有空间(保留)该数据?

当然,最好的方法是完全或部分地对名称进行索引。

于 2013-04-15T11:51:20.190 回答
3

这只是猜测,但未经测试,我会立即使用 MySQL 查询。MySQL 已由其开发人员针对最佳搜索/排序算法进行了优化——这就是它的工作(看看他们的基准手册会让你知道他们有多关心)。编写 JavaScript 解释器的人不会有那么多时间来优化他们的搜索/排序算法。

作为一个额外的好处,Javascript 选项取决于客户端的计算机速度和浏览器 - 一个慢速设备,执行不佳的解释将需要更长的时间。但是,MySQL 选项取决于您的服务器,因此完全在您的控制之下。

一些测试

具有 10,000 个值的 JavaScript 数组,与设定值(jsfiddle.net/c6rpK/)进行比较 - 我得到大约 12 毫秒

对于使用 MySQL 的相同测试,我得到 2.3ms

于 2013-04-15T11:48:04.217 回答