PHP Yavaş SQL Server Query, ama HIZLI SQL Mgt Studio - NEDEN?

3 Cevap php

I have a fast running query (sub 1 sec) when I execute the query in SQL Server Mgt Studio, but when I run the exact same query in PHP (on the same db instace) using FreeTDS v8, mssql_query(), it takes much longer (70+ seconds).

Vuruyorum tabloları ben nerede yan tümcesinde istimal bir tarih alanına bir dizin var.

Bu PHP'nin mssql fonksiyonları indeksi kullanan olmadığını olabilir mi?

Fark meydana zamanında aynı sonuçları - Ben de o zaman PHP SP yürütülürken, bir saklı yordam içindeki sorgu koyarak denedim.

Ben de A ile ya (INDEX (..)) bu tarih dizin vardır masaya fıkra, ama hayır şans ekleyerek denedim.

Here's the query:

SELECT
        1 History,
        h.CUSTNMBR CustNmbr,
        CONVERT(VARCHAR(10), h.ORDRDATE, 120 ) OrdDate,
        h.SOPNUMBE OrdNmbr,
        h.SUBTOTAL OrdTotal,
        h.CSTPONBR PONmbr,
        h.SHIPMTHD Shipper,    
        h.VOIDSTTS VoidStatus,
        h.BACHNUMB  BatchNmbr,
        h.MODIFDT ModifDt

  FROM  SOP30200 h
        WITH (INDEX (AK2SOP30200))
  WHERE
        h.SOPTYPE = 2 AND
        h.DOCDATE >= DATEADD(dd, -61, GETDATE()) AND
        h.VOIDSTTS = 0 AND
        h.MODIFDT = CONVERT(VARCHAR(10), DATEADD(dd, -1*@daysAgo, GETDATE()) , 120 )
  ;

3 Cevap

üzerine, genellikle ARITHABORT suçlu ne ayarları, bu ssms ON ama onunla kapalı bağlantı olabilir

Eğer sorgu çalışırken ssms bu çalıştırın ve ilk sütun PHP bağlandığında oturum için ne olduğunu görmek

select arithabort,* from sys.dm_exec_sessions
where session_id > 50

SQL Profiler çalıştırın, ve bir iz kurmak ve iki çalışan arasında herhangi bir fark olup olmadığını görmek.

Arıthabort, yalıtım düzeyi, Alıntı tanıtıcı, ve diğerleri - GİRİŞ OLAY (ve var olan bağlantı) Metin sütun ile SQL Profiler kullanarak önemli SET komutları bir çok bağlantı ayarlarını gösterecektir. Karşılaştırın ve bir şey sıyrılıyor görmek için hızlı ve yavaş bağlantıları arasındaki bu tezat.