Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 添加条件会使查询速度变慢_Database_Oracle_Performance - Fatal编程技术网

Database 添加条件会使查询速度变慢

Database 添加条件会使查询速度变慢,database,oracle,performance,Database,Oracle,Performance,亲爱的国家, 此帖子与查询的性能相关。 我执行一个简单的查询,如下所示 从workorder中选择wonum、siteid,其中workorder.siteid='MCT'和istask=0 并解码(workorder.pmnum,null,workorder.reportdate,workorder.targetStartDate)>='18年3月12日' 解码(workorder.pmnum,null,workorder.reportdate,workorder.targetStartDat

亲爱的国家,
此帖子与查询的性能相关。
我执行一个简单的查询,如下所示

从workorder中选择wonum、siteid,其中workorder.siteid='MCT'和istask=0 并解码(workorder.pmnum,null,workorder.reportdate,workorder.targetStartDate)>='18年3月12日' 解码(workorder.pmnum,null,workorder.reportdate,workorder.targetStartDate)='18年3月12日'
解码(workorder.pmnum,null,workorder.reportdate,workorder.targetstartdate)一般来说,在
where
子句中涉及的列上创建索引。正如您所描述的,为
类型
列编制索引可能会有所帮助

这真的有用吗?谁知道。。。检查并解释计划。收集表的统计信息,以便优化器知道要做什么(即选择最佳执行计划)。然后你就可以知道该怎么做了


此外,您似乎正在强制Oracle执行隐式转换。说

some_date >= '12-mar-18'
这意味着-如果某个日期列的数据类型是日期(看起来是这样的,否则会得到错误的结果)-Oracle必须通过应用正确的格式掩码(例如,
dd-mon-yy
)将字符串转换为有效的日期(例如,
dd-mon-yy
)。你为什么要这么做?提供
date
value yourself

some_date >= date '2018-03-12'

但是要小心<代码>三月表示“三月”。在我说克罗地亚语的数据库中,这个查询肯定会失败,我们这里没有任何
mar
月份(它是
ožu
)。也许你更喜欢这里的数字,即
12-03-18
。还有一点需要注意:这个值很难理解;什么是
12
?现在是一个月的第12天,还是十二月?这同样适用于
03
。因此,始终使用不会引起混淆的值,方法是提供日期文字(始终采用
yyyy-mm-dd
格式-我首先建议的格式),或者使用带有适当格式掩码的
to_date
函数

some_date >= to_date('12-mar-18', 'dd-mon-yy')