SQL İpuçları

Standard

1.)   SQL de sorgular aşağıdaki sıra ile çalışır.

a.)FROM

b.)WHERE

c.)GROUP BY

d.)HAVING

e.)SELECT

f.)ORDER BY

Her tablonun primary keyi olduğuna emin ol hiç olmasa bile surragate key( yapay anahtar) kullanılmalı. Her primary key indexer görevi göreceğinden sorgu ciddi bir biçimde hızlanacaktır. Sorgu ciddi bir biçimde yavaş çalışılıyorsa ilk kontrol edilmesi gereken kısım burası.

2.)   WordPress sitemi .com uzantılı domainden .xyz uzantıya geçirdiğim için wordpress bazı tablolarını update etmem gerekiyordu. Lakin klasik bir update sorgusu yapamazdım çünkü guid sütununda http://egemenciritoglu.com/bişeyler şeklinde devam etmekteydi. Burada sabit olan egemenciritoglu.com du buna paralel egemenciritoglu.xyz şeklinde düzeltmek istiyordum. Bunun için aşağıdaki update sorgusunu kullandım.

UPDATE tablo_Adi
SET guid = REPLACE(guid, ‘.com’, ‘.xyz’)
WHERE guid LIKE ‘%http://egemenciritoglu%’

3.)   Bir tablonun birebir içinde datalarıyla kopyasını almak istiyordum.Bunun için aşağıdaki update sorgusunu kullandım.

SELECT * INTO bugs_orj FROM bugs

4.)   Count (*) ve Count(SutunAdi) farkı . Count * bütün kayıtların total numarasını getirir.(NULL dahil)count sutun adı null olmayan kayıtların total numarasını getirir.

5.)   Varchar(max) ile Varchar(8000) arasında ciddi farklar var sorgular iki katı kadar hızlı çalışıyor. nvarchar ın max valuesu 4000 varcharın ise 8000dir. max diyince bu karekterlerden sonra tutulma şekli IMAGE , NTEXT veya TEXT dönüştürülüp yeni dosyanın pointerıeski dosyanın yerine atanıyor.

6.) COUNT ve EXISTS arasında fark var count tüm tabloyu elemanı bulsa bile döner exists tek eleman bulunca break yapıp çıkar.Bu yüzden aşağıdaki count sorgusu yerine,

IF (SELECT COUNT(1) FROM USERS WHERE FIRSTNAME LIKE ‘%EGEMEN%’) > 0
     PRINT ‘YES’
exists kullanmalıyız;
IF EXISTS(SELECT FIRSTNAME FROM USERS WHERE FIRSTNAME LIKE ‘%EGEMEN%’)
    PRINT ‘YES’