web-gelistirme-sc.com

MySQL seçim sorgusunda kullanılacak dizini nasıl ipucu veririm?

Hızlandırmaya çalışıyorum (MySQL 5.0.88 çalıştıran) bir MySQL sorgusu var. Altta yatan tablonun birden fazla endeksi var ve sorgu için yanlış indeks kullanılıyor (i_active - 16.000 satır, vs. i_iln - 7 satır).

MySQL konusunda pek tecrübeli değilim, ancak belirli bir dizini kullanmaya zorlayabilen bir use index ipucu olduğunu okuyun. Bu şekilde deniyorum:

 SELECT art.firma USE INDEX (i_iln)
 ...

ancak bu bir MySQL hatası veriyor.

Soru :
Kimse bana yanlış yaptığımı söyleyebilir mi? (Değiştiremem olan 5.0.88'i çalıştırmak dışında.)

30
frequent

FROM table öğesini özlediniz

Doğru SQL şöyle olmalı: 

SELECT art.firma FROM your_table USE INDEX (i_iln) WHERE ....

50
Raptor
select * from table use index (idx);

http://dev.mysql.com/doc/refman/5.0/en/index-hints.html

5

bazen, use index (index_name) optimizer ile tablo taraması için gidebilir, ipucu force index kullanırsanız, optimizer endeksi kullanmaya zorlanır, yalnızca tarama için hiçbir yol kalmazsa tablo taraması için gider Sağlanan dizini içeren satırlar.

SELECT art.firma FROM art FORCE INDEX (i_iln);

USE INDEX ve FORCE INDEX ipuçlarıyla ilgili daha fazla ayrıntı için şunu kontrol edin link

0
MikA

Sütun1, Sütun2, Sütun .... 'u seçin TABLE_NAME KULLANIM INDEX (- index_name) BURADA Sütun = "koşul";

eğer doğru dizine sahipseniz, index () kullanmanız gerekmez. Sorgu otomatiği doğru dizini seçin. Dizini kullandıktan sonra dizini yavaşladıysanız dizini yeniden kontrol edin, dizinde yanlış bir şey var. şimdiden teşekkürler.

0
kuldeep upadhyay