Zend_Db_Adapater_Oracle 和“UPPER”问题
以下问题:
具有 1000 000 条记录的表
如果我将以下查询与 Zend_Db_Adapter_Oracle 一起使用:
SELECT COUNT(*) FROM XYZ WHERE (UPPER(ATTRIBUTE)='XXX') AND UPPER(OBJECT)='XX'
我需要大约 15 秒。
如果我使用 OCI_CONNECT (本机 php),我需要 3 秒。 如果我使用 Zend Adaptor 从查询中删除 (UPPER),则需要 3 秒。
有人知道如何使用上层并运行快速查询吗? :-)
Following problem:
Table with 1000 000 Records
If i use the following query with Zend_Db_Adapter_Oracle:
SELECT COUNT(*) FROM XYZ WHERE (UPPER(ATTRIBUTE)='XXX') AND UPPER(OBJECT)='XX'
I takes a round 15sec.
If i use OCI_CONNECT (native php) i takes 3 seconds.
If i remove (UPPER) from the query with the Zend Adapater its altough 3 seconds.
Does somone has an idea how to user upper and altough run an fast query? :-)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用基于函数的索引: http://use -the-index-luke.com/sql/where-clause/functions/case-insensitive-search
但是,这并不能解释为什么它在不同的连接类型下效果更好,请确保您发出相同的语句两次?或者也许是缓存效果?
use a function based index: http://use-the-index-luke.com/sql/where-clause/functions/case-insensitive-search
however, that doesn't explain why it works better with a different connection type, sure you issue the same statement twice? or maybe caching effects?