V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yeshang
V2EX  ›  PHP

万条字符串数据对比 求优化

  •  
  •   yeshang · 2013-06-04 12:02:47 +08:00 · 3230 次点击
    这是一个创建于 4220 天前的主题,其中的信息可能已经有所发展或是发生改变。
    mysql有:

    表1 有 10000条字符串数据

    表2 有 30000条字符串数据


    表1 和 表2 有几千条重复数据

    如何设计php语句

    我写了下面的语句, 执行效率太低了
    求优化
    for($j=1;$j<=10000;$j++)
    {
    for($i=1;$i<=30000;$i++)
    {
    if (表1的字符串 != 表2的字符串)
    {echo 表2的字符串 . "\n";}
    }

    }



    PS: 我是php超级菜鸟
    9 条回复    1970-01-01 08:00:00 +08:00
    Ricepig
        1
    Ricepig  
       2013-06-04 12:08:45 +08:00 via iPhone   ❤️ 1
    对其中一组排序,或者trie结构,或者两个组一起hash
    Golevka
        2
    Golevka  
       2013-06-04 12:24:49 +08:00   ❤️ 1
    既然数据都在DB里为什么不直接用inner join?
    swulling
        3
    swulling  
       2013-06-04 12:27:20 +08:00   ❤️ 1
    哈希
    raincious
        4
    raincious  
       2013-06-04 12:31:34 +08:00   ❤️ 1
    @Golevka +1

    如果非要用PHP,且数据结构简单的话(两个数组类似这样array('str1', 'str2', 'str3')),那么可以试试看用这个:

    http://pastebin.com/fv0tX5kQ
    yeshang
        5
    yeshang  
    OP
       2013-06-04 12:37:30 +08:00
    @Ricepig
    @Golevka
    @swulling
    @raincious 感谢已送, 超级菜鸟, 表示还没接受这些高级技巧
    wudikua
        6
    wudikua  
       2013-06-04 12:42:41 +08:00   ❤️ 1
    array_intersect() 搞定。
    cxe2v
        7
    cxe2v  
       2013-06-04 13:13:21 +08:00   ❤️ 1
    明显你用2楼的方法比较好,因为在数据库里比较后再输出比输出后再比较速度要快
    skydiver
        8
    skydiver  
       2013-06-04 18:57:17 +08:00
    lz 这个写法不说慢不慢,结果就是错的吧。。。
    你这样打印出很多重复数据了。
    yeshang
        9
    yeshang  
    OP
       2013-06-04 21:00:07 +08:00
    @skydiver 确实如此. 我的写法是错误的. 也不知道怎么改进
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4286 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 01:03 · PVG 09:03 · LAX 17:03 · JFK 20:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.