从MySql表中选择记录的最快方法,在其他表

时间:2016-08-03 14:49:33

标签: mysql

我的网站上有评分表单,可识别基于UserAgent和数十个属性的IP和指纹组合的人。

当用户对某些产品进行评分时,它会将其标记发送到包含其指纹的表评级,这是一个长字符串,如下所示:

cceda00975d0bfd57f629d9cce955842

然后网站加载下一个产品到速率,这不能与之前相同,所以我有以下查询:

SELECT word FROM words 
WHERE word NOT IN (SELECT item FROM rating WHERE fingerprint='$fingerprint') 
ORDER BY RAND() LIMIT 1 

问题是,根据评级表中的记录数量,上升的加载时间非常长。

你能给我一些更好的表现吗?Thx

1 个答案:

答案 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);