Mam zapytanie typu:
SELECT count(*) FROM tabela WHERE pole LIKE '%xyz%';
gdzie tabela ma silnik InnoDB, a pole jest typu char(200), oczywiście istnieje indeks na kolumnie "pole".
W polu "pole" trzymam numery oddzielone znakami średnika:
Cytat
3123123131;5124124314;44123123;312312312;
chciałbym wyszukać czy istnieje chociaż jeden rekord zawierający jakiś numer (np 44123123).
Niestety rekordów jest 300.000 (i rośnie) a za jedną operacją (skrypt PHP) wyszukiwanie następuje około 1000razy.
Niestety zapytanie typu:
SELECT count(*) FROM tabela WHERE pole LIKE '%44123123%';
trwa 4sekundy co przy 1000 opracjach skutecznie zawiesza skrypt :/
Pewnie można by było użyć FULL-TEXT Search ale jest to tablica typu InnoDB w którym to FULL-TEXT nie występuje
Bardzo obawiam się zmienić rodzaj silnika z InnoDB na MyISAM i bardzo niechętnie to zrobię. (Wiąże się to dla mnie z kilkoma dniamia testów czy nic się nie popsuło) + audyt.
Czy ktoś ma pomysł jak zoptymalizować takie wyszukiwanie? Może ostatecznością jest wyszukać to w PHP? :/