T-SQL sorgu performansı için basit tavsiyeler

1. SELECT sorgularınızda * asteriks yerine alan adlarını kullanın.

SELECT * FROM MyTable; ---Uzak durulmalı.
SELECT ID, Description, DateModified FROM MyTable; --- Daha sağlık bir kullanım şekli.

2. INSERT komutlarımızda da bir önceki kurallımız gibi alan adları kullanılmalı.

INSERT INTO MyTable VALUES ('A','B','C'); --- SAğlıksız bir kullanım.

3. SELECT sorgularınızın daha hızlı döndürmesi için LIKE kullanımında daha dikkatli olmalısınız.

SELECT Distinct LastName 
	FROM Person.Contact
		WHERE LastName LIKE '%sen'; --- En sık yapılan % karekteri ile sorgu koşullarının kullanımıdır.

SELECT Distinct LastName FROM Person.Contact WHERE LastName LIKE ‘___sen’; — Ancak koşul yazarken % kullanmadan önce _ kullanımına öncelik verilmelidir.

% kullanımında tüm karekterleri temsil eder, _ ise sadece tek karekter temsil eder. _ yi kullanmak için kaydın uzunluğu bilinmelidir aksi halde % kullanılmalıdır.

SELECT Distinct LastName 
	FROM Person.Contact
		WHERE LastName LIKE 'A%sen'; --- Başlangıç karakteri gibi bir kullanımda sorguyu hızlandırır.

SELECT Distinct LastName FROM Person.Contact WHERE LastName LIKE ‘[A-M]%sen’; — Başlangış karakteri için bir dizi aralığı da verilebilir.

4. DISTINCT kullanımı eğer gerçekten gerekli ise kullanılmalı.

5. UNION kullanımı da gereksiz veya alternatifsiz ise tercih edilmelidir. Eğer tekrar eden kayıtlar sorun olmayacaksa UNION ALL şeklindeki bir kullanım tekrar sorgular ile uğraşıp tekrar eden kayıtları silmeye uğraşmayacağında daha performanslı çalışacaktır.

6. JOIN ile tabloların ilişkilendirilerek sorgu yazılması. WHERE IN kullanımı yerine.

 

SAP R3 – ABAP sık kullandıklarım.

A. SAP kullanıcı notları:
CA03: Normal iş planı görüntüleme.
CO02: Üretim siparişi değiştirme.
COOIS: Üretim siparişlerinin toplu görüntülenmesi. (TMM ve TYTE hariç).
CS03: Ürün ağcı görüntüleme.
LT23: Nakil siparişlerini görüntüleme.
MB11: Malzeme hareketi yaratma.
MB51: Malzeme belgesi listesi.
MB52: Stok görüntüleme.
MD16: Planlı siparişleri görüntüleyip tek tek üretim siparişine dönüştürebilme.
ME13: Satınalma bilgilerini görüntüleme.
MIGO: Nakil hareketleri.
MM03: Malzeme görüntüleme.
MMBE: Stoğa genel bakış.
QS41: QM Katalog bakımı.
VL02N: Mal çıkışı irsaliye kesme.


B. SAP geliştirici notları:
SE10: Taşıma organizatörü. Test ve geliştirme vt.
SE11: ABAP sözlük :)
SE16: SAP tablo görüntüleyici.
SE16n: Tablo içinde verileri değiştirebilme.
SE37: Fonksiyon yaratma - düzeltme.
SE38: Uygulama geliştirme - ABAP düzenleyicisi.
SE80: Object Navigator - Gelişmiş ABAP kod editörü
SE93: Transaction bakımı.
SLG1: Uygulama günlüklerinin görüntülenmesi.
SM04: SAP a bağlı kullanıcıları listeleme.
SM37: Arka plan işlerinin kontrolü.
STMS: Geliştirmelerinizi testten kalite ve canlı vt taşıma yöneticisi.
SU01: SAP kullanıcı düzenleme.

C. SAP tablolar:
DBCON: SAP dış veri kaynakları bağlantı tablosu.

D. ABAP notları:
Substring işlemi: fieldname+starting_position(field_length).
String Birleştirme: CONCATENATE c1 c2 c3 c4 INTO c5.
String Başındaki Boşlukları Silme: CONDENSE degisken.

Z. Zli Uygulamalar:
ZMM45: MM Depo kullanılabilir stok raporu.F.
ZMM600: MM Ürün EAN barkot listesi.F.
ZMM601: MM Ürün - Yarımamul kırılım listesi.F.
ZMM602: MM Çorap ek verileri.F.
ZMM603: MM 0000 depo ean adet stok txt yaratma.F.
ZPP150: PP İplikhane iş emri durum görüntüleme.
ZPP310: PP Dikiş (4001-4002) depo stoklarının iş emri olmayan kalemleri.F.
ZPP414: PP Parti no ile parti iş emri ve stok hareketleri raporu.F.
ZPP450: PP Boayane açık üretim siparişleri. F.
ZPP451: PP Boya şarj rezervasyon raporu.F.
ZPP550: PP Forma Kalite iki tarih arası üretim hataları raporu.F.
ZPP551: PP Forma Kalite günlük aql ve hata adetleri raporu.F.
ZPP553: PP Forma Kalite parti barkod detay.F.
ZPPSLG1: PP SLG1 günlük raporunun alv formu.F.
ZWMD02: WM Rezervasyon hazıredim programı.S.
ZWMD13: WM Barkod-Adres durum raporu.S.
ZWMQ01: WM Barkod Tablosu raporu.S.
ZWMQ02: MM - WM Sıralı haraeket raporu.S.
ZWMR03: WM Boyaraf toplam giriş - çıkış raporu.F.
 

MSSQL Collate sotunu ve çözümü

Veritabanınızın collate ayarlarını değiştirmek isterseniz single moda geçmelisiniz.

ALTER DATABASE SAP SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE SAP COLLATE TURKISH_CI_AS
ALTER DATABASE SAP SET MULTI_USER

Cannot resolve the collation conflict between
“Turkish_CI_AS” and “SQL_Latin1_General_CP1_CI_AS” in the equal to operation.
Hatasını alıyorsanız sorgu sonuna COLLATE TURKISH_CI_AS eklemelisiniz.

SELECT A.*
FROM ALGU_SAP_CUSTOMERS  A,ALGU_SAP_ORDERHEAD B,ALGU_SAP_ORDERITEM C,ALGU_SAP_MATERIALS D
WHERE A.CUSTOMER = B.CUSTOMER AND B.DOCNUM = C.DOCNUM AND C.MATERIAL = D.MATERIAL
COLLATE TURKISH_CI_AS

SQL Sunucu – Ön Bellek Temizlenmesi

SQL sunucunuz çok yavaşladıysa ve işlemler bellek yetmezliğinden dolayı hatalar vermeye başladıysa SQL Server servisini yeniden başlatırsanız, tüm cache bilgisi otomatik olarak temizlenir. Ancak SQL Server servisini yeniden başlatmak mümkün değil ise  aşağıdaki komutlarla da cache temizlenebilir, tempdb shrink işlemi işe yaramadığında bu komutu kullanmıştım:

DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE

MS SQL REPLACE fonksiyonu

Replace fonksiyonu ile belirtilen karakterler yerine yeni karakterlerin konulması.

UPDATE [dbo].[Table1] 
SET UBARCODE=REPLACE(UBARCODE,'M','S'), PROJECT='90',QUANTITY=10,
KONTROL=0, BARCODE='C10101210003'
 WHERE UBARCODE IN
 ('0M3AAA00061',
 '0M3AAA00062',
 '0M3AAA00063',
 '0M3AAA00064',
 '0M3AAA00065')