亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

sqlercn老師,請問,一張大表水平拆分過后,如果需要查詢這張大表的數據某一條,并且不知道被查詢記錄的id值,也就是不知道具體在哪張小表中,那么,我們應該怎么查詢呢?應該join所有小表來一起查詢嗎?


比如:大表:


select id,name from big_table where phone=123456



小表:


select id,name

from small_table_1 as a

left join small_table_2 as b

left join small_table_3 as c

left join small_table_4 as d

where a.phone=123456 or b.phone=123456 or c.phone=123456 or d.phone=123456


或者

select id,name

from small_table_1

where phone=123456

union

select id,name

from small_table_2

where phone=123456

union

select id,name

from small_table_3

where phone=123456

union

select id,name

from small_table_4

where phone=123456


以上的兩種在方式適合使用在水平拆分的表中進行查詢嗎?如果不適合,該怎樣查詢呢?怎樣的查詢效率相對更高呢?

正在回答

2 回答

 這種情況,如果不知道分區鍵的話就只能在各個分區內掃描了。就給出的兩種方法,個人認為第二種要比第一種效率高些。在水平分表設計時最好不要使用沒有意義的id值做為分區鍵,而是選擇在業務中有意義的物理主鍵進行拆分比較適合。 


0 回復 有任何疑惑可以回復我~

如果有100表呢?sql語句是不是很可怕 @sqlercn

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號