SQL Server가 데이터베이스 인 IIS에서 Laravel 4를 실행하고 있습니다. 나는 Laravel에서 데이터베이스에 질의하기 위해 웅변을 사용하고 있습니다. 이 방법을 사용하면 모든 쿼리가 매우 빠르게 실행됩니다. 30 초 후에 실행되지 않는 쿼리 하나가 시간 초과됩니다. SQL 프로파일 러에서 원시 SQL을 가져 와서 명령 줄에서 실행하면 1 초 만에 완료됩니다. 웹 응용 프로그램에서 SQL을 실행하고 명령 줄 (SQL Server Management Studio)에서 실행하는 것과 같은 시간차가있는 이유를 파악하려고합니다. 각 쿼리를 실행하기 전에 캐시를 지우고 그 결과는 같습니다.SQL Server select는 명령 줄에서 1 초 후에 실행되지만 웹 사이트에서 30 초로 시간 초과합니다.
내 Laravel 웅변 코드 (시간 초과) : 나는이 방법을 시도
$checks = SQLServerHostLastCheck::where('organization_id', '=', Session::get('currentIssueTrakOrganizationID'))
->where('hostname', '=', $hostname)
->orderBy('check_level')
->orderBy('instance_name')
->orderBy('check_description')
->get();
(시간 초과) :
$checks = DB::table('sql_server_host_last_check_all_v')
->where('organization_id', '=', Session::get('currentIssueTrakOrganizationID'))
->where('hostname', '=', $hostname)
->get();
이것은 SQL 프로파일 러에서 원시 SQL입니다 (1 년 완료 초) :
이 쿼리는 총 66 개의 행을 반환하며 총 15 개의 열이 있습니다. 각 필드에는 적은 양의 데이터 만 있습니다.
결과가 캐시 될 가능성이 높습니다. 따라서 두 번째 실행하면 결과가 매우 빠르게 나타납니다. 다른 값으로 시도하고 시간이 오래 걸리는 지 확인하십시오. – cmorrissey
@Christopher Morrissey 값을 변경하더라도 명령 줄 쿼리가 1 초 만에 완료됩니다. 또한 실행중인 쿼리간에 캐시를 지우고 결과도 동일합니다. – thestepafter
왜 모든 열을 다시 가져오고 있습니까? 테이블에 큰 데이터 (예 : varchar (max) 또는 varbinary)가 있습니까? 네트워크 연결을 통해 큰 데이터를 보내려면 시간이 걸릴 수 있습니다. – Sparky