sql >> Databasteknik >  >> RDS >> Mysql

mysql-valfråga i en serialiserad array

Som GWW säger i kommentarerna, om du behöver fråga saker på det här sättet, borde du verkligen överväga att lagra denna data som något annat än en big-ole-sträng (vilket är vad din serialiserade array är).

Om det inte är möjligt (eller om du bara är lat), kan du använda det faktum att den serialiserade arrayen bara är en stor ole-sträng, och ta reda på en LIKE-sats för att hitta matchande poster. Sättet PHP serialiserar data på är ganska lätt att ta reda på (tips:dessa siffror indikerar längder på saker).

Nu, om din serialiserade array är ganska komplex, kommer detta att gå sönder snabbt. Men om det är en platt array bör du kunna göra det.

Naturligtvis kommer du att använda LIKE '%...%', så du får ingen hjälp från några index, och prestandan blir mycket dålig.

Det är därför folk föreslår att du lagrar dessa data på något normaliserat sätt, om du behöver fråga "inuti" den.



  1. alternativ till REPLACE på en text- eller ntext-datatyp

  2. Obesvarade frågor om MS SQL Server-säkerhet och åtkomstkontroll

  3. Anslutningspoolen för databasen '/data/data/msv_database.db' har inte kunnat bevilja en anslutning. Anslutningar:0 aktiva, 1 ledig, 0 tillgängliga

  4. Skapa trigger för att logga SQL som påverkade tabellen?