Doktrini MySQL "KUVVET INDEX" kullanmak için Başlarken

2 Cevap php

Ben ağır sorgu süresini azaltmak için MySQL'in "KUVVET INDEX" işlevini kullanmak mümkün olmalıdır Doktrini adlı DQL bir sorgu var. Aşağıdaki sorgu temelde düz SQL gibi görünüyor:

SELECT id FROM items FORCE INDEX (best_selling_idx)
WHERE price = ... (etc)
LIMIT 200;

Ben bazı Doktrin bileşeni DQL ile bunu yapabilmek için uzatmak zorunda varsayalım (ya da orada doctrin sorguları birine keyfi SQL enjekte etmek için bir yoldur?). Herkes herhangi bir fikir var mı?

Teşekkürler!

2 Cevap

Ben çevrimiçi çok az yararlı Doctrine_RawSql örneklerini gördük, bu yüzden burada benim sorgu oluşturmak için yapıyor sona ne ettik.

$q = new Doctrine_RawSql();
$q->select('{b.id}, {b.description}, {c.description}')
  ->from('table1 b FORCE INDEX(best_selling_idx) INNER JOIN table2 c ON b.c_id = c.id')
  ->addComponent('b', 'Table1 b')
  ->addComponent('c', 'b.Table2 c');

Bkz the Native SQL part of the Doctrine documentation. Bunu gerçekleştirmek için RawSql kullanmak gerekir.