当前位置: 首页 > 面试题库 >

使用SQL排序规则影响性能

孙熠彤
2023-03-14
问题内容

我只想检查几件事:

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可能不会完全浪费时间。

Latin1_General_bin区分大小写。
Latin1_General_CI_AS不是。

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

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



 类似资料:
  • 问题内容: 我今天发现(*),根据服务器的不同,我的TSQL命令区分大小写,这意味着当命名一个表的列时,以下指令可能不会成功: 取决于列的排序规则。似乎不区分大小写。 所以我的第一个问题是为什么! 第二个是:更改数据库中所有相关列的所有排序规则的最快技巧(sp?)是什么? 编辑:使事情很清楚: 在所有服务器上工作时 仅在具有排序规则的服务器上工作。注意两个字符串之间的区别。我们在这里不是在谈论数据

  • 问题内容: 在回答这个问题时,我不确定自己没有设法找到足够的答案。 使用二进制排序规则和不区分大小写的排序规则之间的实际区别是什么? 我可以看到三个: 两者的排序顺序不同;的排序顺序可能会将任何变音符放在字母表的末尾,因为比较了字节值(对吗?) 仅区分大小写的搜索 没有平等 还有其他需要注意的差异或副作用吗? 参考: 9.1.2。MySQL中的字符集和排序规则 9.1.7.6。mySQL手册中的_

  • 问题内容: 我正在读的书说 SQL Server支持两种字符数据类型-常规和Unicode。 常规数据类型包括CHAR和VARCHAR,而Unicode数据类型包括NCHAR和NVARCHAR。不同之处在于,常规字符为每个字符使用一个字节的存储空间,而Unicode字符则每个字符需要两个字节的存储空间。每个字符只有一个字节的存储空间,因此,为一列选择常规字符类型会限制您只能选择英语以外的一种语言,

  • 我一直在MariaDB中使用大型和扩展数据库的数据库。数据库由PHP应用程序访问。 我将DB字符集和排序规则设置为utf8mb4和utf8mb4\u unicode\u ci 但并非所有的表都有text(varchar、text等)列。有些表只保存关系,因此所有列都是数字类型(int、bigint等)或日期/时间等。此外,不是文本类型。 在表中,我只保留数字,我是否需要保留Unicode多字节字符

  • 问题内容: 我有两个表,它们使用的是不同的排序规则。不允许串联来自具有不同排序规则的表中的列,例如,不允许使用以下SQL, 我的问题是,如何在不破坏表数据的情况下更改表的排序规则? 在此先感谢,乔治 问题答案: 您可以根据需要随时更改列排序规则。 例如 “数据库默认值”可以是您要使用的任何排序规则。 您可以使用以下方法永久更改列的排序规则

  • 问题内容: 我们已经开始将spring aop用于我们应用程序的各个方面(当前的安全性和缓存)。 我的经理虽然十分了解这种技术的好处,但仍担心该技术对性能的影响。 我的问题是,你是否遇到了使用aop(特别是spring aop)引入的性能问题? 问题答案: 只要你能够控制自己的AOP,我就认为它是有效的。无论如何,我们确实确实存在性能问题,所以通过我们自己的推理,我们无法完全控制;)这主要是因为重

  • 问题内容: 我想使用BigDecimal来表示任意精度的数字,例如在每秒处理数千个订单和执行报告的低延迟交易应用程序中的价格和金额。 我不会对它们进行很多数学运算,因此问题不关乎BigDecimal本身的性能,而是关乎BigDecimal对象的数量会影响应用程序的性能。 我担心的是,大量短暂的BigDecimal对象会给GC造成压力,并导致CMS收集器中更大的Stop-The-World停顿-这绝

  • 我需要在我的网站上集成英里/距离搜索,我正在使用MongoDB地理空间索引,然而,我得到了一些,无法解决。下面是我使用的模式和命令... 下面是我的索引... 然而,当我在mongo shell中运行following命令时,我得到了一个错误······ 错误: