asp.net成员资格表中Lowered *列的意义是什么?

asp.net成员资格表中Lowered *列的意义是什么?

What is the point of the Lowered* columns in asp.net membership tables?

在ASP.Net成员身份和朋友的SQL架构中,以" Lowered"开头的列名称的体系结构原因是什么?有关列的一些示例如下:

  • aspnet_Applications.LoweredApplicationName
  • aspnet_users.LoweredUserName
  • aspnet_membership.LowerEmail

我看到对降低的列进行了索引,但是在我看来,您可以对相关的非降低的列进行索引,而不必进行明显的重复。

我确定它们存在的理由很充分,但我无法弄清楚。


在不区分大小写的数据库(如SQL Server)中没有此目的。无论您使用的是哪种数据库类型,这都是一个可重用的数据库。例如。 Informix对于存储的所有字符串数据均区分大小写。在Informix服务器上使用此数据库将是拥有/使用此列而不是您自己lower()对列进行使用的一个很好的理由。我并不是说您不能以任何方式(varbinary,BINARY_CHECKSUM,运行时/声明式COLLATE等)在SQL Server中进行区分大小写的搜索。这将改变现成数据库的功能。

任何计算列的想法都是为了节省查询期间进行这些计算的周期。最特别是在大型查询期间。另一个想法是您在索引这些列时所想到的。同样,这样做是为了节省周期。


推荐阅读