每个用户从数据库里查询数据后,再次查询不会查询到上次提取的数据。
目前采用的方案是 用户查询后,并把查询的记录插入到另外一个表并做标识
下次查询的时候 用left jion 方式筛选。
多个用户之前可以重复,单个用户不重复查询数据目前的结构如下:
data表
dataid,content,data
logs表
id,dataid,uid查询语句:SELECT data.* FROM data 
LEFT JOIN logs ON (data.dataid = logs.dataid AND logs.uid='1') 
WHERE  logs.id IS NULL  and data.data='2016-06-06' desc LIMIT 100;
这样查询到不重复的数据后再把所有的dataid和uid插入到logs表这样的情况发现少量数据没问题,数据量一旦多了,超级慢和卡,有没有其他的方案或者办法呢?

解决方案 »

  1.   


    你的表里有用户id吗,最好是能有用户id,也就是说,你的log里有用户id,因为你说你是想让每个用户查询出不同的数据,所以对于每个用户来说,如果能够在sql中放入用户id,那么过滤出来的log就会相对比较少,速度也能快一点
      

  2.   


    有ID,也存放了,假设1个用户每次查询100条,100次就查询1000条,1000个用户就是10万条,就算有ID,left join 也是很慢啊。
      

  3.   


    有ID,也存放了,假设1个用户每次查询100条,100次就查询1000条,1000个用户就是10万条,就算有ID,left join 也是很慢啊。data表里有id吗
      

  4.   

    好难的问题,像淘激活码一样的,没人不淘一样的用户量和数据量都大的,是不是不应该用mysql做了,ES?
      

  5.   

    Log.id Is null! 这写法?