MySql性能问题: MD5(value)

标签 mysql md5

出于安全目的,我以这种方式进行一些查询:

SELECT avatar_data FROM users WHERE MD5(ID) ='md5value'

所以,例如我有这个条目:

-TABLE.users-
ID | avatar_data
39 | some-data

我做这个查询:

SELECT avatar_data FROM users WHERE MD5(ID) ='d67d8ab4f4c10bf22aa353e27879133c'

'd67d8ab4f4c10bf22aa353e27879133c'是MD5过滤后的'39'值。

我有一个非常大的数据库,里面有很多条目。我想知道这种方法是否会损害数据库性能?

最佳答案

因为您在要搜索的列上使用函数 ( MD5(ID)= ),MySQL 将不得不进行全表扫描。

虽然我不确定您进行这样的搜索的原因,但为了加快速度,我建议您添加另一列包含已处理的 ID 数据并为其编制索引。

所以你应该这样做:

SELECT * FROM user WHERE MD5_ID = 'd67d8ab4f4c10bf22aa353e27879133c'

关于MySql性能问题: MD5(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1919486/

相关文章:

php - 我不明白为什么我会收到此错误

mysql如何为这些表创建最佳查询

mysql - 当切换到 ORDER BY ASC 而不是 DESC 时,它需要很长时间。是什么赋予了?

database - 如果可以轻松破解,MD5 散列的目的是什么?

mysql - 在 MySQL 中将存储的 md5 字符串转换为十进制值

java - apache.commons.Codec 中 Crypt.crypt() 和 DigestUtils.md5() 之间的区别

mysql - 使用mysql LIMIT关键字选择自增id不一致的数据

python - 如何在Windows 7中使用Python 3.3.4在Django 1.5.5中运行mysql

python - 如何使用 binascii 通过打包和解包重新编码 python 字符串?