yeshang
V2EX  ›  PHP

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

  •  
  •   yeshang · Jun 4, 2013 · 3802 views
    This topic created in 4792 days ago, the information mentioned may be changed or developed.
    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 replies    1970-01-01 08:00:00 +08:00
    Ricepig
        1
    Ricepig  
       Jun 4, 2013 via iPhone   ❤️ 1
    对其中一组排序,或者trie结构,或者两个组一起hash
    Golevka
        2
    Golevka  
       Jun 4, 2013   ❤️ 1
    既然数据都在DB里为什么不直接用inner join?
    swulling
        3
    swulling  
       Jun 4, 2013   ❤️ 1
    哈希
    raincious
        4
    raincious  
       Jun 4, 2013   ❤️ 1
    @Golevka +1

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

    http://pastebin.com/fv0tX5kQ
    yeshang
        5
    yeshang  
    OP
       Jun 4, 2013
    @Ricepig
    @Golevka
    @swulling
    @raincious 感谢已送, 超级菜鸟, 表示还没接受这些高级技巧
    wudikua
        6
    wudikua  
       Jun 4, 2013   ❤️ 1
    array_intersect() 搞定。
    cxe2v
        7
    cxe2v  
       Jun 4, 2013   ❤️ 1
    明显你用2楼的方法比较好,因为在数据库里比较后再输出比输出后再比较速度要快
    skydiver
        8
    skydiver  
       Jun 4, 2013
    lz 这个写法不说慢不慢,结果就是错的吧。。。
    你这样打印出很多重复数据了。
    yeshang
        9
    yeshang  
    OP
       Jun 4, 2013
    @skydiver 确实如此. 我的写法是错误的. 也不知道怎么改进
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   926 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 20:18 · PVG 04:18 · LAX 13:18 · JFK 16:18
    ♥ Do have faith in what you're doing.