Mysql
 sql >> Database >  >> RDS >> Mysql

Ricerca di testo completo di MySQL 5.6 InnoDB

Non ho mai usato Sphinx, ma ho provato MySQL 5.6 FTS su una tabella Innodb con circa 170.000 righe. Creato un indice FTS sulla colonna del nome (contiene tutti i nomi di una persona). Per trovare una parola in qualsiasi posizione della stringa MATCH(name) AGAINST("+word*") IN BOOLEAN MODE funziona molto più velocemente (2-3 volte nel mio caso) rispetto all'utilizzo di name LIKE "word%" OR name LIKE "% word" . Tuttavia, quando si creano join, controllare EXPLAIN per vedere se l'indice FTS è effettivamente utilizzato. Sembra che l'ottimizzatore MySQL non sia così bravo a indovinare quando dovrebbe essere utilizzato l'indice FTS.