sql >> Database >  >> RDS >> Mysql

Regexp en mysql:is er een AND-operator?

Als je geavanceerde zoekfuncties nodig hebt, gebruik dan een fulltext zoekoplossing.

In MySQL, de ingebouwde fulltext-zoekindex functie werkt alleen in de MyISAM-opslagengine. Dit is jammer, omdat InnoDB de voorkeur heeft voor opslagengine voor alle MySQL-tabellen. InnoDB in recente versies van MySQL is in de meeste gevallen sneller dan MyISAM en heeft betere functies voor crashherstel dan MyISAM.

Er zijn verklaringen van het MySQL-ontwikkelteam dat ze van plan zijn een fulltext-index voor InnoDB te implementeren. Maar we zijn nog vele maanden of zelfs jaren verwijderd van dit beschikbaar zijn, en het zal zeker een upgrade naar een latere versie van MySQL vereisen.

Als u MyISAM fulltext-indexen moet gebruiken, raad ik u aan uw gegevens voornamelijk in InnoDB op te slaan en vervolgens een kopie van de doorzoekbare tekst op te slaan in een MyISAM-tabel.

U kunt ook een externe oplossing gebruiken zoals Sphinx Search of Apache Solr om fulltext zoekmogelijkheden extern aan de database te bieden. Er is zelfs een manier om een ​​Sphinx Search-index te gebruiken via de MySQL pluggable storage engine-interface .

Ik gebruik niet graag LIKE met jokertekens of REGEXP voor fulltext-zoekopdrachten. Deze oplossingen leiden tot scans van de volledige tabel voor elke zoekopdracht en werken, afhankelijk van het volume van uw gegevens, honderden of duizenden keren langzamer dan wanneer u een index heeft.

Ik schreef een vergelijking van fulltext zoekoplossingen voor MySQL in mijn presentatie, "Praktisch zoeken in volledige tekst in MySQL ," en ook in een hoofdstuk van mijn boek SQL Antipatterns:Avoiding the Pitfalls of Database Programming .

update:MySQL 5.6 is momenteel in ontwikkeling (vanaf februari 2012) en implementeert een fulltext index-oplossing voor InnoDB.



  1. Tellen hoeveel MySQL-velden op een rij zijn gevuld (of leeg)

  2. WordPress - Ik kan niet inloggen - Er is iets mis met de tabel wp_users

  3. Problemen bij het lezen/schrijven van UTF-8-gegevens in MySQL vanuit Java met JDBC-connector 5.1

  4. Formuliergegevens invoegen in twee verschillende tabellen in de database via jsp-pagina