Sql server MS SQL Coldfusion微调查询

Sql server MS SQL Coldfusion微调查询,sql-server,performance,coldfusion,Sql Server,Performance,Coldfusion,我和一位同事正在尝试微调一个非常简单的查询。他说,他曾在某个地方读到,使用较低的vs lcase可能会影响服务器性能,而且一种方法比另一种方法更有效,但我们找不到这篇文章,我想在这里问一下您的想法。我们应该把时间花在其他地方来调整性能吗 Coldfusion 8企业 MS SQL Server 2000 记录集:500000多条记录 原始查询: select last_name lname from phone where uid = <cfqueryparam value="#attri

我和一位同事正在尝试微调一个非常简单的查询。他说,他曾在某个地方读到,使用较低的vs lcase可能会影响服务器性能,而且一种方法比另一种方法更有效,但我们找不到这篇文章,我想在这里问一下您的想法。我们应该把时间花在其他地方来调整性能吗

Coldfusion 8企业 MS SQL Server 2000 记录集:500000多条记录

原始查询:

select last_name lname
from phone
where uid = <cfqueryparam value="#attributes.email#" cfsqltype="cf_sql_varchar" maxlength="50">
方案A

select last_name lname
from phone
where lower(uid) = <cfqueryparam value="#attributes.email#" cfsqltype="cf_sql_varchar" maxlength="50">
方案B

select last_name lname
from phone
where uid = <cfqueryparam value="#lcase(attributes.email)#" cfsqltype="cf_sql_varchar" maxlength="50">
备选案文C

select last_name lname
from phone
where uid = lower(<cfqueryparam value="#attributes.email#" cfsqltype="cf_sql_varchar" maxlength="50">)

该数据库已编制索引,但不包含约500000多条记录。即使这是一个简单的查询,我们也会对其进行150次循环,因此我们可以做的任何事情都会有所帮助。

在您的情况下,您搜索的是电子邮件字段,其中大部分时间都是小写字符,而不是大写字符。因此,转换为小写can测试将告诉您加快速度

要将其应用于查询,必须将字段和电子邮件变量都转换为小写,以使它们具有可比性:

select last_name lname
from phone
where lower(uid) = <cfqueryparam value="#lcase(attributes.email)#" 
                                 cfsqltype="cf_sql_varchar"
                                 maxlength="50">
在cfqueryparam标记内转换attributes.email更好,因为在将查询发送到sql server之前只需转换一次


本文中的更多信息:

在索引列上使用lower将导致MS SQL不使用您的索引。这可能会对您这样大小的表造成重大性能影响。您应该确保在插入UID时它始终是小写的,或者可以尝试这样做:

这样做可能没有意义,因为:

:

默认SQL Server安装不区分大小写,这意味着SQL Server不会区分大小写字符/字母


好文章。在评论中,有人指出将操作推送到服务器也会有所帮助,因为在loweruid=lower中也可能会看到轻微的改进。您的value属性中有一个磅号问题。每周,我们都会收到一份员工记录的提要。当我们更新数据库时,记录现在以小写插入,因此我不再需要在查询时担心它。attributes.email不是一个完整的电子邮件地址,只有@符号前面的部分是uid,始终为6个字符。执行查询需要多长时间?@yisroel每个记录大约需要1秒,但其中包括所有其他执行的查询和存储过程。如果我只是执行上面的语句,studio manager中的计时器将不会得到0:链接中的文章很棒!我把这个传给了我们的DBA。谢谢你的链接。每周,我们都会收到一份员工记录的提要。当我们更新数据库时,记录现在以小写插入,因此我不再需要在查询时担心它。