我现在是要做一个站内搜索关键词的统计。
我初步设计的表结构如下
kw_id (int)       //表id     
key_word (String) //关键词
key_time (String) //该关键词出现的时间
key_type (String) //搜索的类别
我现在的思路是在搜索中,每当用户输入一个关键词点击搜索,我就把该关键词插入数据库,还有当时的时间也插入。
现在我做统计的时候,我得先用select distinct t.key_word FROM visited.tkeyword t where t.key_time between ? and ? 这个sql语句得到一个在一个时间段内没有重复key_word的list,然后再把这个list进行迭代出的每一个关键词作为条件(keyword),用SELECT count(*) FROM visited.tkeyword t where t.key_word =?and t.key_time between ? and ?  来得到一个时间段内每一个关键字有多少条。
这样做的话假如list里面的数据量是很大的话,可能系统就会吃不消了。
不知道有什么更好的实现方法?包括可以改表结构。

解决方案 »

  1.   

    SELECT t.key_word, count(*) FROM visited.tkeyword t where t.key_time between ? and ?  group by t.key_word;这一条sql语句应该满足你要的两个查询。这样做的话假如list里面的数据量是很大的话,可能系统就会吃不消了。
    是指消耗的空间很大吗?
      

  2.   

    你的这条语句的确是解决了问题~谢谢~
    这样做的话假如list里面的数据量是很大的话,可能系统就会吃不消了。 
    是指消耗的空间很大吗?
    指的是要是有1万条不同的关键词的话那么就得对数据库count一万次,那是很可怕的
    看来我写的sql能力还是太嫩了,得多点训练啊~
    非常谢谢你啊~