mysql索引对列'有用吗;州';仅对列执行位操作时?

mysql索引对列'有用吗;州';仅对列执行位操作时?,mysql,bit-manipulation,bitwise-operators,Mysql,Bit Manipulation,Bitwise Operators,我有很多域实体(存储在mysql中),它们经历了很多不同的操作。每个操作都是从不同的程序执行的。我需要为这些实体保留(flow)-状态,我在其中实现了一个用作位集的长字段“flowstate” 要查询mysql中经过特定操作的实体,请执行以下操作: select * from entities where state >> 7 & 1 = 1 指示位7(响应操作7)已运行。(我认为MySQL没有任何方法可以在这种情况下使用索引。如果您知道位总是从左到右、从右到左或以某种特定

我有很多域实体(存储在mysql中),它们经历了很多不同的操作。每个操作都是从不同的程序执行的。我需要为这些实体保留(flow)-状态,我在其中实现了一个用作位集的长字段“flowstate”

要查询mysql中经过特定操作的实体,请执行以下操作:

select * from entities where state >> 7 & 1 = 1

指示位7(响应操作7)已运行。(我认为MySQL没有任何方法可以在这种情况下使用索引。如果您知道位总是从左到右、从右到左或以某种特定的顺序设置,那么您可以在限制需要检查的行数时使用一些技巧:

... where state < ? and state > ? and ...
…其中state<?和state>?和。。。

如果是这样的话,那么状态索引就很有用。不过,这可能是一个很长的过程。否则,最好的办法可能是修改您的模式。

对语句使用EXPLAIN来查看它是如何访问表的。值得在字段上放置一个索引,然后重新运行EXPLAIN来查看MySQL是否使用它。应该有一个如果表相当大,则结果之间的性能会有差异。

不幸的是,预定义的顺序不是这样的,例如:根据程序的结果,例如,可能会设置第7位或第8位,等等。我将研究重新设计。是的,有一些差异,但与我希望的不同。我已经有了索引,只是没有专为我想做的事而设计。