HPW*_*PWD 1 sql-server oracle coldfusion performance
我不打算开始讨论哪个更好一般,我是专门问这个问题的.:)
我需要编写一个查询来从包含500k +记录的数据库中提取userid(uid)列表.我只回到了一个领域,uid.我可以查询我们的Oracle盒子或MSSQL 2000盒子.查询看起来像这样(这还没有简化)
select uid
from employeeRec
where uid = 'abc123'
Run Code Online (Sandbox Code Playgroud)
是的,它真的只是一个查询.我需要tuninig的帮助是uid被索引,而某些uid可能(不是很多,但有些)'ABC123'或'abc123'.MSSQL不关心区分大小写,而Oracle则关注区分大小写.所以对于Oracle,我的查询看起来像这样:
select uid
from employeeRec
where lower(uid) = 'abc123'
Run Code Online (Sandbox Code Playgroud)
我已经了解到,如果你在MSSQL中的索引字段上使用lower,你会使索引变得无用(有很多方法但是这超出了我的问题的范围 - 因为如果我选择MSSQL,我不需要一点都用.)我想知道我是否选择了Oracle,并使用了lower()函数,这会不会影响查询的性能?
我正在循环这个查询大约200次,除了正在运行的一些其他查询和处理整个循环每次迭代需要1秒,我已经缩小了这个特定查询的缓慢.对于一个网页,200秒似乎是永恒的.对于你的CF读者,超时值已经增加,所以页面没有错误输出,没有页面错误,我只是想加快这个查询.
另一个需要注意的事项:这个数据库与正在运行的其他查询位于不同的城市,因此我确实需要一些滞后时间.
正如TomTom所说,甲骨文将不会使用您的索引.但是,您可以创建基于函数的索引,并在发出查询时使用此新索引.
create index my_new_ix on employeeRec(lower(uid));
Run Code Online (Sandbox Code Playgroud)