sql >> Database >  >> RDS >> Sqlserver

Sneller één binair (1) veld of 8 bit velden opvragen?

Indexen op een enkel bitveld zijn in principe nutteloos. Een bit heeft een verschrikkelijke selectiviteit, 0 of 1, en zal waarschijnlijk genegeerd worden door de optimizer. 8 indexen op 8-bits velden worden 8 indexen die door de optimizer worden genegeerd.

Een index op een bytekolom is slechts iets selectiever, met 256 verschillende waarden. Maar als u op zoek bent naar individuele bitpatronen, zoals 'is bit 3 aan', dan is er geen manier om dit uit te drukken als een individuele waarde om te zoeken of als een bereik.

Conclusie is dat wat je ook probeert, je zult eindigen met een tafelscan hoe dan ook .

Leg dus beter uit wat uw probleem is, niet uw oplossing, en misschien kunnen we aan iets efficiënters denken.



  1. MySQL-volgorde van bewerkingen?

  2. PostgreSQL volgende waarde van de reeksen?

  3. Waarom deze verklaring rs=st.executeQuery(query); is niet excuus? Hoe kan ik alleen een tabel selecteren die afhankelijk is van invoertype =radio van mysql uit twee tabellen?

  4. Int-waarde lezen en verhogen in SQL Server