Ich recherchiere derzeit über die besten Möglichkeiten, um eine erweiterte Suche nach meinem PHP-Projekt zu ermöglichen.
Ich habe es auf die FULLTEXT-Suche beschränkt, anstatt LIKE zu verwenden, um übereinstimmende Zeichenfolgen in einer Tabellenzeile zu finden. Um dies zu tun, muss ich jedoch mit der InnoDB-Engine opfern, wodurch ich die SÄURE von Transaktionen und Tabellenbeziehungen verlieren werde.
Lohnt es sich wirklich, die mysql-Engine von MYISAM zu verwenden oder gibt es bessere Möglichkeiten, Suchfunktionen bereitzustellen?
Irgendwelche Hinweise würden geschätzt werden!
Es hängt wirklich von der Anwendung ab ... Die Verwendung von MyISAM für alles, was referentielle Integrität benötigt, ist ein sofortiger Fehler. Gleichzeitig ist die Textsuche nicht all so effizient.
Grundsätzlich gibt es zwei Möglichkeiten. Wenn Sie feststellen, dass Sie keine echte referenzielle Integrität benötigen, ziehen Sie einen NoSQL-Datenspeicher in Betracht. MongoDB ist eine großartige Dokumentenspeicher-Datenbank.
Wenn Sie hingegen referenzielle Integrität benötigen, aber auch eine schnelle, indizierte Volltextsuche benötigen, sollten Sie Sphinx oder Apache Solr , um einen indizierten Cache für die Volltextsuche zu erstellen.
Wie auch immer, ich halte MyISAM für einen älteren Datenspeicher. Ich würde es nicht für ein neues Projekt verwenden. YMMV.
MyISAM hat mehrere Nachteile - Mangel an Transaktionsunterstützung, Sperren auf Tabellenebene, die es sehr langsam macht, wenn der Lese- / Schreib-Lasttyp stark ist. Eine weitere Unannehmlichkeit von MyISAM-Tabellen - sie sind nicht absturzsicher, so dass Sie im Falle eines unerwarteten Herunterfahrens oder eines Stromausfalls auf dem Server einige Daten verlieren können. MyISAM ist jedoch bei einigen Abfragen sehr schnell.
In Bezug auf die FullText-Suche würde ich vorschlagen, InnoDB + externe Suchmaschine wie Lucene oder Sphinx zu verwenden, so dass Sie von einer sicheren und zuverlässigen Speicher-Engine und schnellen Volltext-Abfragen profitieren können.
Für einen schnellen Start mit InnoDB und Sphinx können Sie auf Ссылка
MySQL 5.6 unterstützt FULLTEXT-Indizes mit InnoDB (veröffentlicht im Februar 2013). Siehe:
Tags und Links mysql search full-text-search innodb myisam