我的网站上有评分表单,可识别基于UserAgent和数十个属性的IP和指纹组合的人。
当用户对某些产品进行评分时,它会将其标记发送到包含其指纹的表评级,这是一个长字符串,如下所示:
cceda00975d0bfd57f629d9cce955842
然后网站加载下一个产品到速率,这不能与之前相同,所以我有以下查询:
SELECT word FROM words
WHERE word NOT IN (SELECT item FROM rating WHERE fingerprint='$fingerprint')
ORDER BY RAND() LIMIT 1
问题是,根据评级表中的记录数量,上升的加载时间非常长。
你能给我一些更好的表现吗?Thx
答案 0 :(得分:0)
索引可以帮助mysql更快地查找表中的数据,就像书中的索引一样。您可以添加如下索引:
ALTER TABLE rating ADD INDEX fingerprint_idx(fingerprint);
编辑正如奥利所说,其他指数也可能有所帮助。
要添加复合索引(多列上的索引),请使用以下语句:
ALTER TABLE rating ADD INDEX fingerprint_item_idx(fingerprint, item);
要为单词列添加索引,请使用:
ALTER TABLE words ADD INDEX word_idx(word);