Genel Bakış
Bugün, aynı SQL ve aynı miktarda verinin geliştirme geribildirimi, ancak kapsamlı test ortamında 140 saniyeden fazla, geliştirme ortamında ise sadece 1 saniyeden fazla sürüyor. Nedeni nedir? Hadi birlikte bir göz atalım ~
Problem sql
Ty.IS_FIXATION'ı isFixation OLARAK SEÇİN, ty.INSPECTION_RULES NULL OLMADIĞINDA VE ty.IS_INSPECTION = 'Y' SONRA 'Kontrol edilmez FROM t_ams_asset_card t LEFT JOIN T_AMS_ASSET_TYPE ty ON ty.TYPE_NO = t.ASSET_TYPE AND t.FINANCE_CODE = ty.ORG_CODE Hr_employee e ON t.USE_MAN = e.EMPLOYEE_CODE AÇIK LEFT JOIN NEREDE t.ASSET_MODULE = 'KENDİ' VE t.IS_DELETE = 'N'
Karşılaştırıldı:
Fikir: Bu duruma genellikle hiçbir dizin veya dizin hatası neden olur.
1. Uygulama planını karşılaştırın
Burada uygulama planını açıklamak + sql ile görüntülemek için
2. Her iki taraftaki çevre endeksini kontrol edin
Her iki ortamda da dizinlerin olduğu ve bu durumda dizinlerden birinin geçersiz olması gerektiği tespit edilebilir ..
3. Dizinlerin zorunlu kullanımı
Burada kuvvet indeksini (HR_EMPLOYEE_U1) deneyin ve zorunlu indeksin de geçersiz olduğunu bulun. İndeks neden burada başarısız oluyor?
4. Tablo depolama motorunu, tablo alanı veri türünü, tablo alanı karakter setini kontrol edin
Genel olarak, dizin hataları, farklı tablo depolama motorları, alan veri türleri veya karakter kümelerinin neden olduğu örtük dönüştürmelerdir.
hr_employee'den tam sütunları göster; t_ams_asset_card'dan tam sütunları göster;
5. Karakter seti kodlamasını değiştirdikten sonra test edin
SEÇ c.TABLE_SCHEMA 'veritabanı', c.TABLE_NAMEtable ', c.COLUMN_NAME "Alan", c.COLUMN_DEFAULT'default değeri ', c.IS_NULLABLE 'boş mu', c.DATA_TYPE 'Alan Türü', c.character_set_name 'orijinal karakter kümesi', c.collation_name'orijinal harmanlama ', CONCAT ( 'TABLOYU DEĞİŞTİR', TABLE_SCHEMA, ".", TABLO İSMİ, 'SÜTUNU DEĞİŞTİRİN', SÜTUN ADI, '', COLUMN_TYPE, 'KARAKTER SETİ utf8mb4 COLLATE utf8mb4_general_ci', DURUM NE ZAMAN c.is_nullable = 'HAYIR' BU DURUMDA 'BOŞ DEĞİL' BAŞKA 'BOŞ' SON, DURUM NE ZAMAN c.COLUMN_DEFAULT = '' SONRA 'VARSAYILAN''''' C.COLUMN_DEFAULT BOŞ OLDUĞUNDA 'VARSAYILAN NULL' BAŞKA concat ('VARSAYILAN', '' '', c.COLUMN_DEFAULT, '' '') SON, 'yorum Yap', '' '', c.COLUMN_COMMENT, '' '', ';' ) 'SQL'i Değiştir' FROM information_schema.`COLUMNS` c NEREDE table_name = 'hr_employee' ve table_schema = 'lcp_db' AND CHARACTER_SET_NAME = 'utf8';
6. Yürütme planını tekrar görüntüleyin
Ayarlamadan sonra, indeksin kullanıldığı ve SQL yürütmesinin de talebi karşılayan 1 saniye içinde olduğu bulundu.
Faydalı bulursanız, lütfen iletmeye yardım edin! Daha sonra daha fazla devop ve DBA içeriği paylaşacağım ve ilgilenen arkadaşlar buna dikkat edebilir ~
-
- Oracle12c bağlantı kimlik doğrulama protokolü hakkında - ORA-28040
-
- Tavşan yetiştirmek için günlük Python eğitimi
-
- Koleksiyona değer bir Oracle gerçekleştirilmiş görünüm yeniden yapılandırma planını paylaşın
-
- Linux disklerini otomatik olarak keşfedin ve zabbix4.2'ye dayalı Linux disk GÇ'sini izleyin
-
- MySQL, veritabanı tablosunun frm dosyasını ve ibd dosyasını yanlışlıkla siler mi? Böyle geri yüklemeyi dene
-
- Mysql deneme-Veritabanı tablosu .frm dosyasını yanlışlıkla sildim, ancak .ibd dosyasını nasıl geri yükleyebilirim?
-
- Zabbix4.2'ye dayalı Linux sunucusu TCP bağlantı durumu izleme uygulaması
-
- Dokuzdan dokuza çarpım tablosunun günlük Python uygulaması
-
- Xiaomi uçmak için açık kaynaklı bir WEB grafik aracını paylaşın - SQL tek tuş optimizasyonunu destekleyin
-
- Python günlük alıştırması nasıl kopyalanır
-
- Bir MySQL deneyinden performance_schema / information_schema yetkilendirmesini görmek için
-
- Xiaomi uçurumunu paylaşın SQL optimizasyonu ve yeniden yazma için tek tıkla optimizasyon aracı ile otomatikleştirilmiş araç