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

výběrový dotaz mysql v rámci serializovaného pole

Jak říká GWW v komentářích, pokud se potřebujete dotazovat na věci tímto způsobem, měli byste skutečně uvažovat o uložení těchto dat jako o něčem jiném než jako velký řetězec ole (což je vaše serializované pole).

Pokud to není možné (nebo jste jen líní), můžete využít skutečnost, že serializované pole je pouze velký řetězec, a zjistit klauzuli LIKE, abyste našli odpovídající záznamy. Způsob, jakým PHP serializuje data, je docela snadné zjistit (nápověda:tato čísla označují délku věcí).

Nyní, pokud je vaše serializované pole poměrně složité, rychle se rozpadne. Ale pokud je to ploché pole, měli byste to zvládnout.

Samozřejmě budete používat LIKE '%...%', takže nezískáte žádnou pomoc od žádných indexů a výkon bude velmi slabý.

To je důvod, proč lidé navrhují, abyste tato data ukládali nějakým normalizovaným způsobem, pokud je potřebujete „uvnitř“ dotazovat.



  1. Proč (a jak) rozdělit sloupec pomocí master..spt_values?

  2. Jak mohu spočítat počet slov v řetězci v Oracle?

  3. Západka FGCB_ADD_REMOVE

  4. Vysvětlete podrobněji návrh výkonu JOIN vs. LEFT JOIN a WHERE