2016-08-02 5 views
2

약 15k + 개 항목의 .mdb 파일을 사용하려고합니다. 나는 VBScript에서 ASP를 사용하고 ASP는 데이터베이스를 쿼리합니다. 내가 작성한 질의는 다음과 같이 보입니다. 이 경우 x는 현재 날짜를 mm/dd/yyyy 형태로 유지하는 변수 일뿐입니다.액세스 쿼리가 너무 오래 걸림

rs.Open "SELECT [Item Number], [Qty], [Delivery Point] 
    FROM [ItemBoard] 
    WHERE format([Submitted Date/Time], 'mm/dd/yyyy') = '"&x&"' 
     AND [OrderUrgency] = 'Rush' 
     AND ([Delivered] is NOT NULL OR [Delivered Short] is NOT NULL)", conn 

제 질문은이 쿼리는 완료하는 데 1 분 이상 걸립니다. 너무 높습니다. 또한 Where 절을 변경하여 Where 문을 3 개 모두가 아니라 3 개로 변경하면 쿼리 완료 시간이 약 50-55 초로 감소합니다. 데이터베이스 자체의 구조 외에도이 문제의 원인을 찾을 수있는 후보가 있습니까?

+3

WHERE 형식 ([제출 날짜/시간], 'mm/dd/yyyy') = '으로 db 엔진은'[제출 된 날짜/시간]'에 대한 색인 된 검색을 사용할 수 없습니다. 해당 필드가 날짜/시간 데이터 유형 인 경우 문자열 비교 대신 날짜 비교를 수행하고 필드가 색인되어 있는지 확인하십시오. 충분하지 않으면 'x'가 무엇인지 보여주십시오. – HansUp

+0

@HansUp 내 게시물에서 x에 설명을 추가 할 수 있으며 확실히 개선 될 것입니다. 그러나 앞에서 말한 것처럼 where 절에서이 부분을 제외해도 50-55 초의 완료 시간을 얻습니다. – Naiya55

+1

아하. 당신이 "3 개의 문장 중 하나만 가지고 있다고"말했을 때, 당신은 어느 문장을 말하지 않았습니다. 그런 다음'[제출 날짜/시간] = Date()'을 사용하고'[제출 된 날짜/시간]과'[OrderUrgency] '가 색인되어 있는지 확인하십시오. 충분하지 않으면 ADO에서 DAO로 전환합니다. – HansUp

답변

0

모든 제안이 내 런타임을 향상시키는 동안, 이것은 내가 찾고 있던 것을 바꾸지 않고 가장 좋은 시간을주었습니다.

rs.Open "SELECT [Item Number], [Qty], [Delivery Point] 
FROM [ItemBoard] 
WHERE [Submitted Date/Time] >= Date() AND [Submitted Date/Time] < DateAdd('d', 1, Date()) 
    AND [OrderUrgency] = 'Rush' 
    AND ([Delivered] is NOT NULL OR [Delivered Short] is NOT NULL)" 

나는 그것이 나를 늦추고있는 네트워크 였으면 좋겠다고 생각했지만 그럴 것 같지 않습니다. 또는 적어도 내가 얻고있는 높은 쿼리 시간의 주요 원인이 아니 었습니다. 실제 데이터베이스를 정리하고 인덱스를 추가 할 수있는 권한을 요청해야 할 것입니다.

관련 문제