Ne, ne v obecném smyslu, nevěřím, že ani 5.6 (nejnovější verze, kdy byla tato odpověď poprvé napsána) má tuto funkci. Stojí za zmínku, že verze 8.0.13 a vyšší nyní podporují funkční indexy , což vám umožní dosáhnout toho, co potřebujete, bez níže popsané metody spouštění.
Pokud používáte starší verzi mysql
, to je možné použít pouze hlavní část sloupce (tato funkce existuje již dlouhou dobu), ale nikoli jedna začínající na druhém nebo následujících znacích, ani žádná jiná složitější funkce.
Například následující vytvoří rejstřík pomocí prvních pěti znaků názvu:
create index name_first_five on cust_table (name(5));
U složitějších výrazů můžete podobného efektu dosáhnout pomocí jiného sloupec s indexovatelnými daty v něm a poté pomocí spouštěčů vložení/aktualizace, aby bylo zajištěno jeho správné vyplnění.
Kromě plýtvání prostorem pro nadbytečná data je to v podstatě to samé.
A ačkoli to technicky porušuje 3NF, je to zmírněno používáním spouštěčů, které udržují data v synchronizaci (toto je něco, co se často dělá pro vyšší výkon).