假設我們有這樣的表:是它相當快查詢不同的表比具有where子句
create table Foo(
id int,
name varchar,
k int --can be 1 or 2 or 3
)
,或者我們可以具有用於每個k值3個表
create Fook1(
id int,
name varchar
)
...
create table Fook2
...
createa table Fook3
是它將是相當快的事:
select * from Foo where k = 3
比做:
select * from Fook3
你可以給一個**真實的**例子嗎?如果你只有3個值,那麼將它們放在單獨的表中會(理論上)更快 – JNK
對於任何數字,它可能會更快。問題在於它是否值得進行折衷,這取決於它如何被索引,需要跳過多少額外的表格和邏輯循環,因爲這個數字從3變大,需要多少額外的維護對於N個表格等。通過適當的索引和分區的可能性,這種設計模式應該大部分已經滅絕。 –
@JNK:只有OP只請求具有'k'的唯一值的FOOK。如果不是,則需要2個查詢+一個聯合,這會比#WHERE查詢慢。 –