PHP新人有个问题请教大家

#1 碎翼天使

我建立了 一个关键字表 里面存储着 所有的关键字
然后 我现在要查询 一组关键字($new) 是否在 这个表里存在

我可以循环 $new 每循环一次都去查询一次数据库

我想 我还可以 把所有的关键字 都取出来 生成一个数组 $old
用关键字的name做 $key  用id做$value
然后 循环要查询的关键字 做
if(is_null($old[$new[$x]]))
来判断 该关键字 是否存在

但是我不确定这种方法行不行
以及哪种 方法的效率比较好一点儿

请教大家一下

2012-03-21 17:56:13

#2 jake

要看你的“待查关键字数组”一般有多大,

如果只有几个,而且数据量不大,那么可以直接把这些关键字连成 keyword = xxx OR keyword =xxx OR...
然后再一次查询。

如果几十个,那么建议是循环,一个一次查(查了后缓存),表中关键字字段要加上索引。

如果几百个以上,那么建议是用memcached缓存,memcache的key-value特性,做这种查询反而更容易,而且效率非常高。

2012-03-21 18:31:34

#3 碎翼天使

那还是用缓存好了
理由如下:
1.用OR的方式 肯定不行,因为如果是没有的关键字 还要添加。用OR就不知道 哪个关键字没有了
2.作为一个网站。可能会有很多人同时使用这个功能。

2012-03-22 08:54:20