有个用户表,如下:
id name manager1 manager2 manager3
1 张三 A B C
2 李四 E A D要求查找管理者123中有A的数据。有没有好的查询方式或者把三个字段通过算法合并成一个字段,然后再进行查询?
哪种效率高?有什么算法可以实现?
id name manager1 manager2 manager3
1 张三 A B C
2 李四 E A D要求查找管理者123中有A的数据。有没有好的查询方式或者把三个字段通过算法合并成一个字段,然后再进行查询?
哪种效率高?有什么算法可以实现?
select * from 表名 where manager1=‘A’or manager2=‘A’or manager3=‘A'
都有索引等价于
select * from 表名 where manager1=‘A’union
select * from 表名 where manager2=‘A’union
select * from 表名 where manager3=‘A'
而且关键还是索引,任何一个字段没有索引,都需要全表扫描
如果两个或者三个字段没有索引,or需要全扫描一次,union需要扫描2-3次