繁体   English   中英

Coldfusion从第二个数据源获取数据

[英]Coldfusion getting data from a second datasource

我有一个查询从第二个数据源获取数据。 这很慢。 有没有更有效的方法来做到这一点?

我认为缓慢的部分是ListQualify。 它产生一个包含40,000个值的列表。 但是我不确定另一种方法。

<cfif GetExtractionData.recordcount gt 0 >

            <cfquery name="queryVPOCar" datasource="Web_Applications">
                Select [strStockNumber] as "STOCK",
                        field1 as "field_1",
                        field2 as "field_2",
                        field3 as "field_3",
                        field4 as "field_4",
                        field5 as "field_5",
                        field6 as "field_6"
                From ExtractionAggregates
                WHERE [strStockNumber] IN (#ListQualify(StockList,"'",",","ALL")# )
            </cfquery>

        <!--- Select an empty Row --->
        <cfquery name="joinQuery" dbtype="query" >
            SELECT *
            FROM queryVPOCar
            WHERE queryVPOCar.STOCK = ''
        </cfquery>

        <!--- Add empty row to table, so we have column names  ---> 
        <cfset QueryAddRow(joinQuery) />

        <!--- if results exist, add them to the query --->
        <cfif queryVPOCar.recordcount gt 1 >
            <cfquery name="GetExtractionData" dbtype="query">

                SELECT * FROM 
                GetExtractionData, queryVPOCar
                WHERE GetExtractionData.STOCK = queryVPOCar.STOCK

                UNION 

                SELECT GetExtractionData.*, joinQuery.*
                FROM GetExtractionData, joinQuery
                WHERE GetExtractionData.STOCK  NOT IN (#ListQualify(ValueList(queryVPOCar.STOCK),"'",",","ALL")# ) 

                ORDER BY STOCK 
            </cfquery>
        </cfif>

    </cfif>

更好的方法是使用sql server尽可能多地进行数据库工作。 第1步是将链接服务器安装到sql server上的oracle db。 第2步是编写一个存储过程:

  • 使用openquery从oracle获取数据并将该数据放入sql server数据库的临时表中。
  • 从连接到临时表的sql server数据库表中获取数据

第3步是从ColdFusion调用存储过程并显示结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM