SELECT
Sorgularda gerekli alanları belirtin
Sorgudaki tüm alanları seçmek yerine SELECT
, yükü azaltmak ve sorgu hızını artırmak için yalnızca gerekli alanları seçin.
Örneğin, yalnızca müşterinin adını ve adresini önemsiyorsanız, sorguyu değiştirin:
SELECT * FROM customers;
ile
SELECT name, address FROM customers;
Dizin oluştur
Index
MySQL
verileri daha hızlı aramanıza ve almanıza yardımcı olur. WHERE
, JOIN
, veya yan tümcelerinde sık kullanılan alanları belirleyin ORDER BY
ve bunlar için dizinler oluşturun.
Örneğin, " orders
" tablosunda, " " alanı veya customer_id
sorgularında sık kullanılıyorsa, aşağıdaki gibi bir dizin oluşturabilirsiniz: WHERE
JOIN
CREATE INDEX idx_customer_id ON orders(customer_id);
Uygun dizin türlerini kullanın
MySQL
, hash B-tree
ve full-text
. En iyi performansı sağlamak için sorgu gereksinimlerinize göre uygun dizin türünü seçin.
full-text
Örneğin, bir veri alanı içinde metin aramanız gerekirse, aşağıdaki gibi bir dizin oluşturabilirsiniz:
CREATE FULLTEXT INDEX idx_description ON products(description);
Sorguları optimize et
EXPLAIN
Sorgu yürütme planını görüntülemek ve nasıl MySQL
gerçekleştirdiğini analiz etmek için kullanın. Bu, dizinleri kullanarak veya sorguları yeniden yazarak performans sorunlarını belirlemenize ve sorguları optimize etmenize yardımcı olur.
Örneğin, bir sorgunun sorgu planını görmek için SELECT
aşağıdaki komutu çalıştırın:
EXPLAIN SELECT * FROM orders WHERE customer_id = 123;
Döndürülen sonuçların sayısını sınırlayın
Bir sorgu çok sayıda sonuç döndürdüğünde, yan tümceyi kullanarak döndürülen sonuçların sayısını sınırlayın LIMIT
. Bu, yükü azaltmaya ve sorgu hızını artırmaya yardımcı olur.
Örneğin, "ürünler" tablosundan yalnızca 10 sonuç döndürmek için aşağıdaki sorguyu kullanabilirsiniz:
SELECT * FROM products LIMIT 10;
INNER JOIN
yerine kullan JOIN
INNER JOIN
normalden daha iyi performans gösterir JOIN
. INNER JOIN
Yalnızca her iki tabloda da eşleşen kayıtları önemsiyorsanız kullanın .
Örneğin, " orders
" ve " customers
" tablolarını " " alanına göre birleştirmek için customer_id
aşağıdaki sorguyu kullanabilirsiniz:
SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;
Geçici tabloları dikkatli kullanın
Geçici tablolar belirli durumlarda kullanılabilir, ancak sorguları yavaşlatabilecekleri için dikkatli kullanılmaları gerekir. Mümkünse geçici tabloları kullanmaktan kaçınmak için sorguları optimize etmeyi düşünün.
Örneğin, aşağıdaki sorguda geçici bir tablo kullanmak yerine:
CREATE TEMPORARY TABLE temp_table SELECT * FROM products;
orijinal tablodaki verileri doğrudan sorgulamak için sorguyu optimize etmeyi deneyebilirsiniz.
MySQL yapılandırmasında ince ayar yapın
Sistem kaynaklarından en iyi şekilde yararlanmak ve uygulamanızın gereksinimleriyle uyumlu hale getirmek için MySQL'i yeniden yapılandırmayı düşünün. Bu, belleğin, arabellek boyutlarının, bağlantı sınırlarının ve diğer parametrelerin yapılandırılmasını içerir. MySQL belgelerine bakın ve yapılandırmayı kendi ortamınıza uyacak şekilde nasıl ayarlayacağınızı öğrenin.
Gereksiz verileri silin
Veritabanı boyutunu azaltmak ve sorgu hızını artırmak için gereksiz verileri silin veya eski verileri yedekleyin.
Örneğin, eski günlük kayıtlarını içeren bir " " tablonuz varsa logs
, aşağıdaki sorguyu kullanarak bir yıldan eski kayıtları silebilirsiniz:
DELETE FROM logs WHERE created_at < '2022-01-01';
Belleği kullan cache
MySQL'in belleğini, cache
sık yürütülen sorguları ve yakın zamanda erişilen verileri depolamak için yapılandırın. Bu, disk erişim süresini azaltmaya ve sorgu hızını artırmaya yardımcı olur.
Örneğin, 1 GB boyutunda bir önbellek yapılandırmak için MySQL'in "my.cnf" yapılandırma dosyasını aşağıdaki gibi değiştirebilirsiniz:
[mysqld]
...
query_cache_type = 1
query_cache_size = 1G
Lütfen yukarıdaki örneklerin açıklayıcı olduğunu ve gerçek veritabanınızın yapısına ve gereksinimlerine göre ayarlanması gerektiğini unutmayın. Kendi ortamınıza uygun olduklarından emin olmak için bu optimizasyon tekniklerini uygulamadan önce ve uyguladıktan sonra dikkatli bir şekilde test edin ve etkinliğini değerlendirin.