gpt4 book ai didi

mysql - 1张 table ,而是两张 table 。类似于 mysql 表的磁盘分区

转载 作者:行者123 更新时间:2023-11-29 05:39:56 25 4
gpt4 key购买 nike

有没有办法把一张表一分为二,或者像硬盘一样分区,这样我就可以调用

SELECT * FROM email validated

SELECT * FROM email pending

得到两个不同的结果。两个结果都不包含对方的行。

这是什么东西。我觉得我很久以前在某个地方读到过关于 mysql 分区的信息,我想知道这是否就是这样。如果不是,这可能吗。

最佳答案

MySQL 支持称为 VIEW 的虚拟表. VIEW 实际上是一个存储的 MySQL 查询,可以像查询一个真实的表一样进行查询。

使用您提供的示例,您将创建一个名为 email 的基表,如下所示:

CREATE TABLE `email` (
`email` VARCHAR(64) NOT NULL,
`validated` CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`email`))
ENGINE = MyISAM;

然后是两个虚拟表(VIEWS),如下:

CREATE VIEW `email_validated` AS SELECT * FROM `email` WHERE `validated`='1';
CREATE VIEW `email_pending` AS SELECT * FROM `email` WHERE `validated`='0';

然后您可以查询这两个 View ,就好像它们是实际的表一样。

然而,请注意,使用 View 会降低性能,因为无论何时引用 View ,都会查询整个 View (执行 View 的整个选择语句)。在像这样微不足道的示例中,只要“已验证”字段在基表中编制索引 就没什么大不了的。然而,在更复杂的 View 中,当仅尝试检索几行时,将整个 View 虚拟表加载到内存中可能没有意义。

其他数据库引擎有一个称为 Materialized View 的结构,这与 MySQL View 相同,不同之处在于物化 View 作为以某种频率或触发器更新的已实现表存在。可以对真实表执行的任何操作都可以对物化表执行,包括更改索引甚至存储引擎。使用 Archive 存储引擎拥有事务历史记录,同时使用 Memory 存储引擎维护汇总汇总表物化 View 是完全合理的。虽然 MySQL 本身不支持物化 View ,但有 tricks模仿物化 View 的行为。

关于mysql - 1张 table ,而是两张 table 。类似于 mysql 表的磁盘分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7543722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com