Какая структура должна быть проиндексирована MySQL для моего внутреннего SQL-оператора соединения?

У меня есть около 1 миллиона записей для моей таблицы фирмы и это утверждение

SELECT    firma.adi,firma.tel, firma.cep, firma.adres,
firma.etiket, sehir.ad, ilce.ilce_adi, ustkat.ust_adi
FROM      firma
inner     join sektor on sektor.s_fid=firma.id
inner     join ustkat on ustkat.ust_id=sektor.s_ustid
inner     join sehir on sehir.id=firma.sehir
inner     join ilce on ilce.ilceid=firma.ilce
WHERE     firma.uyeliktur<4 and firma.onay=1 and
firma.zoom>0 and firma.koordinat>0
GROUP BY  firma.id
ORDER BY  firma.uyeliktur desc, firma.bastarih desc

Как я могу использовать MySQL индекс для этого.

0

Решение

Вы хотели бы индекс со всеми столбцами в where пункт. Первое должно быть onay (из-за условия равенства). Вторым должно быть любое условие, которое является наиболее ограничительным. Один из них:

firma(onay, uyeliktur, zoom, koordinat)
firma(onay, zoom, uyeliktur, koordinat)
firma(onay, koordinat, uyeliktur, zoom)

Только первые два столбца используются непосредственно для поиска строк для where, Два других имеют небольшую эффективность, поэтому where значения там.

Если, кстати, на самом деле это флаги, вам лучше сказать zoom = 1 чем zoom > 0,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]