2016-06-09 1 views
0

Internet Explorer에서는 느리지 만 파이어 폭스에서는 빠를 수 있습니다. 내가 선택 * 테이블에있는 모든 것을 사용하고 있기 때문에 사용하고 있습니다. 나는 *을 꺼내려고 시도했지만 모든 열을 나열했지만 그 중 누군가 두 사람이이 문제를 해결할 수 있을지 궁금해서 두 테이블을 사용하기 때문에 휴식합니다.두 개의 테이블을 호출 할 때 쿼리에서 *를 제거하는 중

:

<!--- Display Table for DataTables ---> 
<cffunction name="displayTable" access="public" returntype="query"> 
    <cfset var processTable = ''> 
    <cfquery name="processTable"> 
     SELECT * 
     FROM dbo.Dealer_Track_Work, dbo.Dealer_Track_Dealers 
     WHERE dbo.Dealer_Track_Work.dealerID = dbo.Dealer_Track_Dealers.id  
    </cfquery> 
    <cfreturn processTable> 
</cffunction> 

Dealer_Track_Work 표
enter image description here

Dealer_Track_Dealers
enter image description here

이 같은 두 행의 모든 ​​열을 호출 시도했다 (I는 MSSQL 2012을 사용하고 있습니다)

+0

모든 열을 나열하면 오류가 발생합니까? – nscheaffer

+3

* 인터넷 익스플로러가 삐딱하고 파이어 폭스가 빠름 * 질의는 클라이언트가 아닌 데이터베이스 서버에서 실행됩니다. 따라서 브라우저는 쿼리 속도와 아무 관련이 없습니다. 브라우저 동작에 차이가 나는 경우 데이터가 클라이언트에 반환되는 방식을 살펴야합니다. – Leigh

+0

거기 둘 다 1.43s 주위에 페이지를 처리하지만 파이어 폭스는 페이지를로드 할 수있는 1/2 초만 걸립니다. 인터넷 익스플로러는 15 초 정도 걸립니다 ... 나는 어디서부터 시작해야 할지를 모릅니다./모든 선택을 제거했습니다. 필요한 열만 호출했다 ... 나는 인터넷 익스플로러 속도를 낼 수 없다. lol –

답변

4

두 테이블에 이러한 열이 있으므로 id 또는 Rmks을 선택하려고하면 모호합니다.

SELECT dbo.Dealer_Track_Dealers.id, -- Here! 
     dealerID, 
     Date_Received, 
     op_id, 
     Date_Due, 
     Date_Complete, 
     Completed_Late, 
     Closed_by, 
     dbo.Dealer_Track_Dealers.Rmks, -- And here 
     Processing_Location, 
     Item_Count, 
     Name 
FROM dbo.Dealer_Track_Work, dbo.Dealer_Track_Dealers 
WHERE dbo.Dealer_Track_Work.dealerID = dbo.Dealer_Track_Dealers.id  
+0

둘 이상의 열이 모호합니다 - 두 Rmks가 모두 발생합니다. –

+0

@PaulSturm nice catch, thanks. 그에 따라 내 대답을 편집했습니다. – Mureinik

+0

사용중인 오래된 구문보다는 올바른 조인을 제안하는 것이 좋습니다. –

5

는 당신에게 SQL 쿼리가 문제가 확실 : 당신이 그들을 조회하려는 경우에는 where 절에서 수행 한 것처럼, 당신은 완전히 그들을 자격을해야합니까? 브라우저가 결과를 렌더링하는 속도의 차이와 같은 것으로 들립니다. SQL 프로파일 러 또는 SSMS를 사용하여 데이터베이스에 대해 직접 쿼리를 실행하고 통계를 살펴보십시오. 쿼리가 빠르게 실행되는 경우 최적화 작업에 집중해야합니다.

SQL과 관련하여 조인을 수행 할 때 열 이름을 지정하려면 열 이름을 완전하게 한정하거나 테이블의 별칭을 지정해야합니다. 또한 좀 더 복잡한 쿼리에서 가독성 때문에 암시 적 조인을 사용하지 않는 것이 좋습니다.

SELECT dtw.id, 
    dtw.dealerID, 
    dtw.Date_Received, 
    dtw.op_id, 
    dtw.Date_Due, 
    dtw.Date_Complete, 
    dtw.Completed_Late, 
    dtw.Closed_by, 
    dtw.Rmks, 
    dtw.Processing_Location, 
    dtw.Item_Count, 
    dtd.Name 
FROM dbo.Dealer_Track_Work dtw 
JOIN dbo.Dealer_Track_Dealers dtd ON dtw.dealerID = dtd.dealerID 
+2

.. cfquery의 관점에서 보면 일반적으로 SELECT는 동일한 열 이름을 여러 번 반환 할 필요가 없습니다. 어떤 이유로 든 실제로 둘 다 필요하다면 * 열 * 별칭이 필요하므로 두 열의 이름이 다릅니다. 그렇지 않으면 CF는 열 중 하나의 값만 반환합니다. – Leigh

2

말했다 됐어요 다른 모든 것들뿐만 아니라, 빠른 렌더링하는 페이지를 얻을 수있는 방법이있을 수 있습니다. 나는 그 접근법을 설명 할 것이다. 너도해볼 수있어.

ColdFusion에서는 <cfsavecontent>을 사용하여 쿼리 결과의 표시 코드를 변수에 저장합니다. 그런 다음 toScript()을 사용하여 해당 CF 변수를 javascript 변수로 변환하십시오.

HTML의 경우 페이지에 빈 <div> 컨테이너를 넣으십시오. 마지막으로 javascript를 사용하여 div의 내용을 사용자가 만든 javascript 변수로 바꿉니다.

관련 문제