sql >> Databáze >  >> RDS >> Mysql

Regexp a mysql:existuje operátor AND

Pokud potřebujete sofistikované vyhledávací funkce, použijte řešení fulltextového vyhledávání.

V MySQL, vestavěný index fulltextového vyhledávání Tato funkce funguje pouze v úložišti MyISAM. To je nešťastné, protože InnoDB je preferovaným úložištěm pro všechny tabulky MySQL. InnoDB v posledních verzích MySQL je ve většině případů rychlejší než MyISAM a má lepší funkce pro obnovu po havárii než MyISAM.

Vývojářský tým MySQL uvedl, že zamýšlí implementovat fulltextový index pro InnoDB. Ale od toho, aby to bylo k dispozici, nás dělí mnoho měsíců nebo dokonce let a určitě to bude vyžadovat upgrade na nějakou novější verzi MySQL.

Pokud musíte používat fulltextové indexy MyISAM, navrhoval bych uložit svá data primárně do InnoDB a poté uložit kopii prohledávatelného textu do tabulky MyISAM.

Můžete také použít externí řešení, jako je Sphinx Search nebo Apache Solr poskytovat možnosti fulltextového vyhledávání externě v databázi. Existuje dokonce způsob, jak použít index Sphinx Search prostřednictvím rozhraní zásuvného úložiště MySQL .

Nerad používám LIKE se zástupnými znaky nebo REGEXP pro fulltextové vyhledávání. Tato řešení vyžadují úplné prohledávání tabulek pro každé vyhledávání a v závislosti na objemu vašich dat běží stovky nebo tisíckrát pomaleji, než kdybyste měli index.

Ve své prezentaci jsem napsal srovnání fulltextových vyhledávacích řešení pro MySQL, "Praktické fulltextové vyhledávání v MySQL “ a také v kapitole mé knihy SQL Antipatterns:Avoiding the Ptfalls of Database Programming .

aktualizace:MySQL 5.6 je aktuálně ve vývoji (k únoru 2012) a implementuje fulltextové indexové řešení pro InnoDB.



  1. Jak funguje funkce SUBSTR() v MySQL

  2. Najděte záznamy SQL obsahující podobné řetězce

  3. Chyba:Při instalaci psycopg2 na Alpine v Dockeru nebyl nalezen spustitelný soubor pg_config

  4. Kód chyby Connector/C++ MySQL:2014, SQLState:HY000 a Chyba synchronizace příkazů proč?