欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql垂直分表后如何查詢

吉茹定2年前8瀏覽0評論

在實際應用開發中,我們需要將關聯性較強的數據表拆分成多個垂直分表,以提高數據庫查詢性能。但是,垂直分表后,如何查找需要的數據呢?下面我們介紹一下基于MySQL的垂直分表查詢。

//創建學生信息表
CREATE TABLE `student_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
//創建學生成績表
CREATE TABLE `student_score` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`stu_id` int(11) DEFAULT NULL,
`course` varchar(20) DEFAULT NULL,
`score` float(4,2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
//拆分成兩個垂直分表
CREATE TABLE `student_basic` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `student_detail` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`stu_id` int(11) DEFAULT NULL,
`course` varchar(20) DEFAULT NULL,
`score` float(4,2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

以上是創建垂直分表的SQL語句。

如果我們需要查詢學生的信息和成績,可以通過嵌套查詢實現:

SELECT a.*, b.course, b.score FROM student_basic a, student_detail b WHERE a.id=b.stu_id AND a.id=1;

以上通過嵌套查詢連接兩個表,并通過a.id=b.stu_id的條件進行關聯,查詢出指定學生的所有信息。

需要注意的是,垂直分表后,需要使用嵌套查詢或者JOIN操作才能進行關聯查詢,所以要保證表結構合理。同時,垂直分表后的查詢性能相對于單表查詢可能會有所下降,但是與水平分表相比,垂直分表維護成本更低,對數據一致性的要求也較低。