Nasıl bir MySQL tablo için bir dizin eklemek için?
Veri yaklaşık 150,000 satır ile çok büyük bir MySQL tablo var. Ben denemek ve çalıştırmak şu anda
SELECT * FROM table WHERE id = '1';
kod ID alanı birincil indeks olarak iyi çalışır. Ancak, son zamanlarda bir proje geliştirme için, başka bir alana göre veritabanında arama yapmak zorundayım. Örneğin
SELECT * FROM table WHERE product_id = '1';
Bu alan bir dizin olarak ekledim, ancak, önceden oluşturulmuş oldu ama yukarıdaki sorguyu çalıştırmak için çalıştığınızda, sonuçlar çok yavaş. Bir sorgu zaten bir tane ekledim ne zaman product_id alanı için dizin yok olduğunu ortaya koymaktadır AÇIKLAMAK ve sonuç olarak sorgu herhangi bir yerde 30 dakika 20 dakika tek bir satır döndürür.
DÜZENLEME:
Tam AÇIKLAMAK benim sonuçlar şunlardır:
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
---- ------------- ------- ------ ---------------------- ------ --------- ------ ------ ------------------
| 1 | SIMPLE | table | ALL | NULL | NULL | NULL | NULL | 157211 | Using where |
---- ------------- ------- ------ ---------------------- ------ --------- ------ ------ ------------------
EDİT2:
Sadece bir göz attık unutmayın için yararlı olabilir ve KİMLİĞİ alanı PRODUCT_İD alanı VARCHAR olarak saklanır, ancak İNT olarak saklanır. Bu sorunun kaynağı olabilir mi?
CEVAP
ALTER TABLE `table` ADD INDEX `product_id` (`product_id`)
Hiç mysql strings
integer
karşılaştırın. id
= ** 11 tırnak işaretleri kaldırın.
Bunları nasıl belirli sütun adları ile...
Nasıl bir mysql veritabanı tablo boyut...
Nasıl MySQL bir tablo sütunu yeniden a...
Nasıl belirli bir tablo için MySQL mot...
nasıl mysql veritabanında tek bir tabl...