1

Konu: aynı sorguda süre : çok anormal

kullandığım sql datayı indirebilirsiniz:  www.hanimeli.com.tr/irs201006181806.zip
açıp SQL Server Management Studio içinde çalıştırılırsa, dosya yapılarını kurup datayı yüklüyor.

aşağıda vfp içinden yaptığım sorgulama var, sadece WHERE bölümünde ANDlerin sırası değişik:

WHERE ((paket.teksid BETWEEN ?m.t1 AND ?m.t2) AND (paket_kont.paketid IS NULL) AND (paket.st<100)) şeklinde olduğu zaman sorgu yanıtı 20-30 saniyede geliyor,

WHERE ( (paket_kont.paketid IS NULL) AND (paket.st<100) AND (paket.teksid BETWEEN ?m.t1 AND ?m.t2) ) olduğu zaman göz açıp kapayana kadar .....
fabrikada kullanan kızlar söylediğinde "öyle şey olmaz falan diye de büyük konuşmuştum "

daha enteresanı SQL Server Management Studio içinden hiç farketmiyor (göz açıp kapayana kadar )
????
ANDlerden herhangi birisini kaldırırsam da çok hızlanıyor !

20-30 saniye olan

Visual Fox Pro
1

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TEXT TO m.komut NOSHOW 

            SELECT paketarih, paket.paketid, paketnot, st, 0 AS kontta,
                   teksad, adet, gram, paket.teksid
            FROM irs..paket
            LEFT OUTER JOIN irs..paket_kont ON paket.paketid=paket_kont.paketid
            LEFT OUTER JOIN irs..tekstil ON paket.teksid=tekstil.teksid
WHERE ((paket.teksid BETWEEN ?m.t1 AND ?m.t2) AND (paket_kont.paketid IS NULL) AND (paket.st<100))
            ORDER BY paketarih DESC
            ENDTEXT
  m.t1=3*100000
  m.t2=m.t1+99999
m.lnh=SQLSTRINGCONNECT(Fon.sqlbağ)  && kod copypaste- kendinizinki ile deneyin
IF 0>SQLEXEC(m.lnh,m.komut,"curpaket")
  fon.sqlhata
  RETURN
ENDIF


hızlı olan

Visual Fox Pro
1

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TEXT TO m.komut NOSHOW 

            SELECT paketarih, paket.paketid, paketnot, st, 0 AS kontta,
                   teksad, adet, gram, paket.teksid
            FROM irs..paket
            LEFT OUTER JOIN irs..paket_kont ON paket.paketid=paket_kont.paketid
            LEFT OUTER JOIN irs..tekstil ON paket.teksid=tekstil.teksid
WHERE ( (paket_kont.paketid IS NULL) AND (paket.st<100) AND (paket.teksid BETWEEN ?m.t1 AND ?m.t2) )
            ORDER BY paketarih DESC
            ENDTEXT
  m.t1=3*100000
  m.t2=m.t1+99999
m.lnh=SQLSTRINGCONNECT(Fon.sqlbağ)  && kod copypaste- kendinizinki ile deneyin
IF 0>SQLEXEC(m.lnh,m.komut,"curpaket")
  fon.sqlhata
  RETURN
ENDIF

bir açıklama bulabilirsek ilginç bir ayrıntı daha öğrenmiş olacağız...

Son düzenleyen, konuka (18.06.2010 21:02:48)

VFP9 SP2

2

Re: aynı sorguda süre : çok anormal

Su anda LANda deneme sansim yok. Ayni makineye kurulu SQL server ile denedim, ilki 0.098 ikincisi 0.084 saniye.
SQL server bir index onerdi onu yaratinca sureler 0.080 ve 0.073 oldu.

SQL
1

2
3
CREATE NONCLUSTERED INDEX [teksid_st]

ON [dbo].[paket] ([teksid],[st])
INCLUDE ([paketid],[paketarih],[paketnot],[adet])

Guncelleme: LAN'da da denedim. 0.078, 0.072 (bu sefer SQLStringConnect() kismi zamanlamaya dahil degil).

Son düzenleyen, cetinbasoz (21.06.2010 13:01:45)

Yen yaz 1907'ye yolla FB gelsin evinde yensin.
(sonra salaklar ciksin alin terine şike desin)