MySQL復合表是由多個單表組成的一種表結構,擁有比單表更高的靈活性和查詢效率。
復合表的創建方式與單表類似,在CREATE TABLE語句中指定多個表名及其字段即可。
CREATE TABLE my_compound_table (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
age INT(11) NOT NULL,
address VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB
PARTITION BY RANGE (age) (
PARTITION p0 VALUES LESS THAN (20),
PARTITION p1 VALUES LESS THAN (40),
PARTITION p2 VALUES LESS THAN (60),
PARTITION p3 VALUES LESS THAN (80),
PARTITION p4 VALUES LESS THAN MAXVALUE
);
上面這個例子創建了一個復合表,將數據以age字段進行分區。使用復合表的好處在于,不必再使用JOIN語句進行查詢,而是可以直接查詢所需的某一表。
SELECT name, address FROM my_compound_table PARTITION (p1);
上面這個例子只查詢了名字和地址,而且只查詢了age小于40的表p1。
雖然復合表可以提高查詢效率,但也有一定的限制。首先,復合表的查詢語句必須指定表名或分區名,否則會查詢全部表;其次,復合表不能刪除單獨的單表,只能整體刪除復合表。
總體來說,MySQL復合表是一種值得使用的表結構,可以在提高查詢效率的同時減少使用JOIN語句所帶來的復雜性。