【问题标题】:PHP String Comparison versus Mysql Like % [closed]PHP字符串比较与Mysql Like % [关闭]
【发布时间】:2014-02-23 11:11:20
【问题描述】:

我想知道如果一个记录集有大约 500,000 行且具有单个列名,那么使用 Jquery 的自动完成功能会更快。

将行存储在memcache中并在PHP中提取内存并进行字符串比较。

或者

使用 mysql 并针对搜索词执行类似的 '%%'。

【问题讨论】:

  • @PeeHaa 但发布到 SO 并让其他人测试更简单:p
  • 如何从 memcached 中提取“like %foo%”的值? Memcached 很好 .. 作为 缓存,而不是作为查询源。
  • @DigitalChris 希望有人已经完成并可以发布结果
  • @user2864740 一旦从 memcache 加载结果,我正在考虑一个 PHP 字符串比较函数。

标签: php mysql autocomplete jquery-autocomplete


【解决方案1】:

“PHP 解决方案”听起来有点像重新实现 SQL 查询过滤器 - 公平地说,您需要酌情使用 strpos 而不是简单的相等。

SQL/LIKE 查询或真正的一般查询最大的事情是making sure that they are able to utilize indexes - 这通常意味着限制为foo% 过滤器,building a de-normalized reverse index,使用“全文”(MySQL 本身只能这样做 前缀通配符),或者只是可以进行全表扫描。

预计 SQL 总体上会更快 - 尽管确定的唯一方法是在实际使用条件下创建性能基准/配置文件 - 因为,即使使用全表扫描,必须传输的数据更少(而且 PHP 方法听起来不像是使用巧妙的解决方案)。

另一方面,memcached 可用于缓存此类 SQL/LIKE 查询的结果:假设查询限制为 100 个结果,这些结果根据过滤器值存储在 memcached 中。

如果/当相同的过滤器来自客户端时,memcached 会根据确切的 key 找到一个条目,不需要去 SQL 找到的缓存条目已经被底层 SQL/LIKE 查询过滤,因此可以返回直接地。 (然后它就变成了一个确保缓存只处理可能在不久的将来再次查询的信息的游戏。)

【讨论】:

    【解决方案2】:

    这样的问题是无法猜测的。这么说,我猜选项 2 会更快。

    在我都尝试过之前我不会做出决定,即使那样我也会尝试提出第三种选择。

    【讨论】:

    • 这是评论而非答案
    猜你喜欢
    • 1970-01-01
    • 2011-12-24
    • 2013-01-06
    • 2012-12-16
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    相关资源
    最近更新 更多