Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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
在SQL中有没有一种从串行解析并行的方法?_Sql_Oracle_Parallel Processing - Fatal编程技术网

在SQL中有没有一种从串行解析并行的方法?

在SQL中有没有一种从串行解析并行的方法?,sql,oracle,parallel-processing,Sql,Oracle,Parallel Processing,我对一个我写的查询有问题,我们使用的数据仓库不希望接受该查询,因为它包含一个从串行或S->p并行的部分。当我运行解释计划时,它会给我一个小错误,但当我运行查询时,它会出错。任何想法都会有帮助 查询 SELECT /*+ use_hash (doi,seg) */ doi.ORDER_ID AS "PO" , doi.DISTRIBUTOR_ID AS "Vendor ID" , doi.ISBN AS "ASIN" , doi.QUANTITY_ORDERED AS "Quantity Conf

我对一个我写的查询有问题,我们使用的数据仓库不希望接受该查询,因为它包含一个从串行或S->p并行的部分。当我运行解释计划时,它会给我一个小错误,但当我运行查询时,它会出错。任何想法都会有帮助

查询

SELECT /*+ use_hash (doi,seg) */
doi.ORDER_ID AS "PO"
, doi.DISTRIBUTOR_ID AS "Vendor ID"
, doi.ISBN AS "ASIN"
, doi.QUANTITY_ORDERED AS "Quantity Confirmed"
FROM D_DISTRIBUTOR_ORDER_ITEMS doi
JOIN    (SELECT /*+ use_hash */
    psm.ASIN
    FROM PRODUCT_SEGMENT_MEMBERSHIP psm
    WHERE psm.SEGMENT_ID = 784885) seg
ON doi.ISBN = seg.ASIN
WHERE doi.ORDER_DAY = '2009/04/06'
ORDER BY seg.ASIN

这应该与您的查询相同

SELECT 
doi.ORDER_ID AS "PO"
, doi.DISTRIBUTOR_ID AS "Vendor ID"
, doi.ISBN AS "ASIN"
, doi.QUANTITY_ORDERED AS "Quantity Confirmed"
FROM D_DISTRIBUTOR_ORDER_ITEMS doi
JOIN PRODUCT_SEGMENT_MEMBERSHIP psm ON doi.ISBN = psm.ASIN AND psm.SEGMENT_ID = 784885
WHERE doi.ORDER_DAY = '2009/04/06'
ORDER BY psm.ASIN

这是否也会给您带来错误?

如果您像下面这样尝试,直接将
子查询
转换为
连接
,会怎么样

SELECT 
doi.ORDER_ID AS "PO"
, doi.DISTRIBUTOR_ID AS "Vendor ID"
, doi.ISBN AS "ASIN"
, doi.QUANTITY_ORDERED AS "Quantity Confirmed"
FROM D_DISTRIBUTOR_ORDER_ITEMS doi
JOIN PRODUCT_SEGMENT_MEMBERSHIP psm
ON doi.ISBN = psm.ASIN
WHERE psm.SEGMENT_ID = 784885
AND doi.ORDER_DAY = '2009/04/06'
ORDER BY psm.ASIN
不完全确定,但当您尝试使用格式字符串输入文字时,会得到
ORA-01861
,但格式字符串的长度与文字的长度不同

如果我没有错的话,那么问题在于行
doi.ORDER\u DAY='2009/04/06'
。试着像下面那样改变它

TO_DATE(doi.ORDER_DAY,'yyyy/mm/dd') = '2009/04/06'
(或)


至于串行到并行,我无法找到解决方案,但这似乎是一个微不足道的问题,只会使查询花费几秒钟的时间。所看到的错误ORA-01861可以通过改变线路来解决 doi.订单日='2009/04/06' 到 doi.ORDER\u DAY=截止日期('20090406','YYYYMMDD')


这就解决了ORA-01861的问题

您运行此操作的RDBMS引擎是针对什么的?这会产生什么错误?这会给我一个错误,即seg.ASIN无效,因为我使用该子查询来调用我创建的一个段。这也会出错,ORA-01861 literal与格式字符串不匹配,如果你想阻止计划并行运行,你可以尝试类似于
SELECT/*+no\u parallel*/…
的提示。
doi.ORDER_DAY = TO_DATE('2009/04/06','yyyy/mm/dd')