我只想检查几件事:
Q1) Latin1_General_CI_AS 不区分大小写,区分重音:即SQL 会将以下内容视为相等 - “hello”和“HELLO”
使用 LINQ,我经常这样做:
db.Where(v => v.Email == "some email".ToLower())
Q2)假设我对 Q1 的理解是正确的,我是否只是在查询中调用 ToLower() 浪费处理时间?
Q3) 有谁知道使用 Latin1_General_bin 相对于 Latin1_General_CI_AS 是否会有性能改进?即,是否已经在博客等上进行了性能测试(在我写这篇文章时想到了这一点,所以还没看我自己)
一般来说,SQL 比较不区分大小写。
但也有例外,例如在 MySQL 中,如果您使用binary
varchar 比较区分大小写。
所以你的 ToLower 可能并不完全是浪费时间。
The Latin1_General_bin
区分大小写。
鉴于Latin1_General_CI_AS
不是。
区分大小写的比较在数据库中会更快,但是如果您想要将“某些电子邮件”与“某些电子邮件”匹配,您将付出一定的代价,您将不得不转换为小写,从而失去所有速度增益。
我没有计时,但我认为不值得这么麻烦。
我建议在进行微优化之前明智地使用索引和查询。
-- 过早的优化是万恶之源,Donald Knuth。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)