SQL 排序规则影响性能

2024-01-08

我只想检查几件事:

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 中,如果您使用binaryvarchar 比较区分大小写。

所以你的 ToLower 可能并不完全是浪费时间。

The Latin1_General_bin区分大小写。
鉴于Latin1_General_CI_AS不是。

区分大小写的比较在数据库中会更快,但是如果您想要将“某些电子邮件”与“某些电子邮件”匹配,您将付出一定的代价,您将不得不转换为小写,从而失去所有速度增益。
我没有计时,但我认为不值得这么麻烦。
我建议在进行微优化之前明智地使用索引和查询。

-- 过早的优化是万恶之源,Donald Knuth。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL 排序规则影响性能 的相关文章

随机推荐