在mysql中使用md5进行搜索会对性能产生什么影响

时间:2015-11-09 09:22:43

标签: mysql

我想通过让我们的数据库中的资源保留散列(md5)值然后使用

找到它来混淆我的客户端中的ID。
 select * from resources where md5(_id) = "3c164361es869624aa2c16cdd034abaa";

但我不了解mysql的内部工作原理,这似乎对我来说可能会阻碍性能。

1 个答案:

答案 0 :(得分:0)

由于_id是常量并且不会改变,因此每次重新计算其md5都会浪费CPU时间和时间。记忆,此外,随着桌子变大,你会看到延迟增加。

你最好为你的_id列的md5_id添加一个额外的列,每当你插入一个新行时只计算它的md5并将其保存在新的md5_id列中,这样你只需要执行md5一次而不是每次查询

您的新查询应该是

select * from resources where md5_id = "3c164361es869624aa2c16cdd034abaa";