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

2013-06-04 12:02:47 +08:00
 yeshang
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超级菜鸟
3200 次点击
所在节点    PHP
9 条回复
Ricepig
2013-06-04 12:08:45 +08:00
对其中一组排序,或者trie结构,或者两个组一起hash
Golevka
2013-06-04 12:24:49 +08:00
既然数据都在DB里为什么不直接用inner join?
swulling
2013-06-04 12:27:20 +08:00
哈希
raincious
2013-06-04 12:31:34 +08:00
@Golevka +1

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

http://pastebin.com/fv0tX5kQ
yeshang
2013-06-04 12:37:30 +08:00
@Ricepig
@Golevka
@swulling
@raincious 感谢已送, 超级菜鸟, 表示还没接受这些高级技巧
wudikua
2013-06-04 12:42:41 +08:00
array_intersect() 搞定。
cxe2v
2013-06-04 13:13:21 +08:00
明显你用2楼的方法比较好,因为在数据库里比较后再输出比输出后再比较速度要快
skydiver
2013-06-04 18:57:17 +08:00
lz 这个写法不说慢不慢,结果就是错的吧。。。
你这样打印出很多重复数据了。
yeshang
2013-06-04 21:00:07 +08:00
@skydiver 确实如此. 我的写法是错误的. 也不知道怎么改进

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/71158

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX