哪个更有效的JavaScript数组搜索或MySQL LIKE查询?

时间:2013-04-15 11:42:58

标签: php javascript mysql arrays

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

搜索预先加载的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它应该返回与其他人一起)

2 个答案:

答案 0 :(得分:3)

这只是猜测,但是如果没有测试,我会立即进行MySQL查询。 MySQL已经被其开发人员优化为最佳搜索/排序算法 - 这是它的工作(一看他们的benchmark manual就会让你知道他们关心多少)。编写JavaScript解释器的人没有多少时间专门用于优化他们的搜索/排序算法。

作为一个额外的加分,Javascript选项取决于客户端的计算机速度和浏览器 - 具有执行不良解释的慢速设备将花费更长的时间。但是,MySQL选项依赖于您的服务器,因此完全由您控制。

一些测试

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

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

答案 1 :(得分:3)

我会选择MySQL。事实上,我甚至不会想要比较两者。

数据库善于处理数据:这是他们的工作。让他们这样做。

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

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

最好的当然是完全或部分索引名称。