有個用戶表,如下:
id name manager1 manager2 manager3
1 張三 A B C
2 李四 E A D
要求查找管理者123中有A的資料。
有沒有好的查詢方式或者把三個欄位通過演算法合并成一個欄位,然后再進行查詢?
哪種效率高?有什么演算法可以實作?
uj5u.com熱心網友回復:
col1='A' or col2='A' or col3='A'uj5u.com熱心網友回復:
1樓正解select * from 表名 where manager1=‘A’or manager2=‘A’or manager3=‘A'
uj5u.com熱心網友回復:
manager1=‘A’or manager2=‘A’or manager3=‘A' 效率低下,有沒有其他好的方式。uj5u.com熱心網友回復:
如果這三個列都有索引,會自動優化,如果其中任意一個列沒有索引,會全表掃描
都有索引等價于
select * from 表名 where manager1=‘A’union
select * from 表名 where manager2=‘A’union
select * from 表名 where manager3=‘A'
uj5u.com熱心網友回復:
or 換成union all 寫法 效率要好點uj5u.com熱心網友回復:
or不等價union all,應該換成union
而且關鍵還是索引,任何一個欄位沒有索引,都需要全表掃描
如果兩個或者三個欄位沒有索引,or需要全掃描一次,union需要掃描2-3次
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/81781.html
標籤:MySQL
上一篇:如何通過編程方式對表單表格的第1列text1控制元件的dblclick事件撰寫命令程式?
下一篇:RROR OGG-04036 Oracle GoldenGate Capture for MySQL, e1.prm: Positioning sequ
