Mysql 按位存储数据会使搜索结果更快吗

Mysql 按位存储数据会使搜索结果更快吗,mysql,sql,query-optimization,bitwise-and,Mysql,Sql,Query Optimization,Bitwise And,My tinyint字段有6个可能的选项,对于每个搜索,用户选择可接受的选项。目前,我只将每个选项存储为0到6的值,并在WHERE中为每个可接受的选项执行一个单独的子句。 示例(用户选择的选项0、3和4): 我想知道如果将数据存储为1、2、4、8、16和32,并执行逐位搜索,是否会更快 SELECT * FROM table WHERE type & 25 我相信第一个选项通常能够被索引,然后速度会更快,但这个表实际上有43个字段,其中33个字段可以搜索,包括各种操作。(查询完成时通常

My tinyint字段有6个可能的选项,对于每个搜索,用户选择可接受的选项。目前,我只将每个选项存储为0到6的值,并在WHERE中为每个可接受的选项执行一个单独的子句。 示例(用户选择的选项0、3和4):

我想知道如果将数据存储为1、2、4、8、16和32,并执行逐位搜索,是否会更快

SELECT * FROM table WHERE type & 25

我相信第一个选项通常能够被索引,然后速度会更快,但这个表实际上有43个字段,其中33个字段可以搜索,包括各种操作。(查询完成时通常有很多AND。)我不仅需要索引很多字段,而且这不会否定索引的优势吗?

一个好的优化器应该为这两个选项产生大致相同的速度。我会选择更符合逻辑的解决方案:如果您的程序使用类型0到6,那么在数据库中存储数字0到6会更好

您也可以使用中的
操作符使查询更具可读性:

SELECT * FROM table WHERE type IN (0, 3, 4)

哇,我其实不知道IN接线员的存在。感觉有点傻,因为这非常适合这种情况,并且使我的查询(和PHP)更简单、更可读。
SELECT * FROM table WHERE type IN (0, 3, 4)