Eğer içinde milyonlarca kayıt olan tablolarınız varsa sorgularınızın süresi iyice artacaktır. Özel durumlarda böyle bir tabloyu belirli bir kritere göre ayırmak sorgu sürenizi kısaltacaktır. Bunun için aşağıdaki gibi bir sorgu işinizi görecektir.
Benim uygulamamda Türkiye'deki tüm yol parçalarının isimlerinin olduğu 1.5 milyon kayıtlı bir tablo var. Bu tablo içinden belirli bir mahalle içine giren yolları sorguluyorum. Bu tablomu ilçe ilçe ayırdım ve sorgu sürem epeyce azaldı.
DECLARE @ilceAdi nvarchar(255)
DECLARE @il nvarchar(255)
DECLARE @ilce nvarchar(255)
DECLARE tabloCursor cursor
For
Select IL + '_' + ILCE, IL, ILCE From Yollar_tr Group By IL,ILCE Order By IL,ILCE ASC
Open tabloCursor
Fetch Next From tabloCursor Into @ilceAdi,@il,@ilce
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF (@@FETCH_STATUS <> -2)
BEGIN
EXEC ('DROP TABLE [' + @ilceAdi + ']')
EXEC ('SELECT * into [' + @ilceAdi + '] FROM Yollar_tr where IL=''' + @il + ''' AND ILCE=''' + @ilce + '''')
PRINT ' '
END
Fetch Next From tabloCursor Into @ilceAdi,@il,@ilce
END
CLOSE tabloCursor
DEALLOCATE tabloCursor
Sorgularken de:
"Select Adi From " + ddliller.SelectedItem.Text + "_" + ddlilceler.SelectedItem.Text +
" Where MAHALLE LIKE '" + ddlmahalleler.SelectedItem.Text + "' GROUP BY Adi ORDER BY Adi ASC"
Şeklinde sorguluyoruz.
Decompiling the code of universe.
Listening the cosmic background radiation.
Swimming in Inter Stellar Medium.
|