我现在是要做一个站内搜索关键词的统计。
我初步设计的表结构如下
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里面的数据量是很大的话,可能系统就会吃不消了。
不知道有什么更好的实现方法?包括可以改表结构。
我初步设计的表结构如下
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里面的数据量是很大的话,可能系统就会吃不消了。
不知道有什么更好的实现方法?包括可以改表结构。
是指消耗的空间很大吗?
这样做的话假如list里面的数据量是很大的话,可能系统就会吃不消了。
是指消耗的空间很大吗?
指的是要是有1万条不同的关键词的话那么就得对数据库count一万次,那是很可怕的
看来我写的sql能力还是太嫩了,得多点训练啊~
非常谢谢你啊~