RDBMS 的内部工作
Internal working of RDBMS
我有一个包含 10 列的 table,我希望 select 来自 table 的第 1 列和第 9 列。在 RDBMS 中,应在内部 select 编辑多少列?
关系模型背后的一个基本思想是 RDBMS 用户根据 table 表示抽象应用程序关系和描述抽象应用程序状态的查询来描述他们的问题,而 RDBMS 接口 隐藏(尽可能)table & 由另一个这样的 "logical" RDBMS 层或其他 "physical" 范式层查询实现。 (因此,逻辑和物理data independence。)
您的问题只能针对特定 DBMS 的特定版本的特定实现来回答。您可以在教科书和幻灯片中找到讨论的 DBMS 实现,其中有许多网站和 .pdf 在线。
如果这是一个性能问题:在您熟悉模式设计和查询以及索引等基本性能问题之前,您不应该担心这种事情。谷歌搜索:Oracle 的 .pdf Oracle Database SQL Tuning Guide. Bookboon's free online downloadable ebook Database Design and Implementation: A practical introduction using Oracle SQL.
RDBMS 将 table 数据存储在行和页面中的行中。
RDBMS 可以索引 table 数据。
在内部,RDBMS 在索引或 table.
中逐行读取
所以问题是要知道有没有索引。
在table根本没有索引的情况下,需要读取所有列,因为table行是所有列的复合
如果索引恰好有两列,则只读取两列加上对 table 行位置的引用。
如果一个索引有两列加上更多的列,这个索引将被优化器选择并进行读取更多的信息,但少于table行。
在某些特殊情况下,由于优化器(在像 SQL 服务器这样的“大”RDBS 中……)如果有两个索引,一个包含第一列,另一个包含第二列,这两个索引可以并发读取并执行最终连接。
我有一个包含 10 列的 table,我希望 select 来自 table 的第 1 列和第 9 列。在 RDBMS 中,应在内部 select 编辑多少列?
关系模型背后的一个基本思想是 RDBMS 用户根据 table 表示抽象应用程序关系和描述抽象应用程序状态的查询来描述他们的问题,而 RDBMS 接口 隐藏(尽可能)table & 由另一个这样的 "logical" RDBMS 层或其他 "physical" 范式层查询实现。 (因此,逻辑和物理data independence。)
您的问题只能针对特定 DBMS 的特定版本的特定实现来回答。您可以在教科书和幻灯片中找到讨论的 DBMS 实现,其中有许多网站和 .pdf 在线。
如果这是一个性能问题:在您熟悉模式设计和查询以及索引等基本性能问题之前,您不应该担心这种事情。谷歌搜索:Oracle 的 .pdf Oracle Database SQL Tuning Guide. Bookboon's free online downloadable ebook Database Design and Implementation: A practical introduction using Oracle SQL.
RDBMS 将 table 数据存储在行和页面中的行中。 RDBMS 可以索引 table 数据。 在内部,RDBMS 在索引或 table.
中逐行读取所以问题是要知道有没有索引。
在table根本没有索引的情况下,需要读取所有列,因为table行是所有列的复合
如果索引恰好有两列,则只读取两列加上对 table 行位置的引用。
如果一个索引有两列加上更多的列,这个索引将被优化器选择并进行读取更多的信息,但少于table行。
在某些特殊情况下,由于优化器(在像 SQL 服务器这样的“大”RDBS 中……)如果有两个索引,一个包含第一列,另一个包含第二列,这两个索引可以并发读取并执行最终连接。