当所有表之间存在多个FK-PK关系时,数据库视图如何保持快速查询速度

How does database views keep the fast query speed when multiple FK-PK relationships among all the tables

最近,我在将带有 Java 对象的数据绑定到数据库时遇到了性能问题。尤其是当涉及到很多 FK-PK 关系时,将数据库中的数据与 java 代码配对时。我意识到这个问题并通过创建数据库视图并创建 POJO 来映射视图来解决性能下降问题。

我在网上做了一些研究,但找不到好的答案:数据库(我正在使用mysql)如何在视图中保持快速的数据查询速度?

例如,如果我在10个表中创建一个视图,具有FK-PK关系,该视图查询和显示结果的速度还是很快的。数据库引擎的幕后究竟发生了什么?

索引。

MySQL implicitly creates a foreign key index(即组成外键的列的索引),除非已经存在。并非所有数据库引擎都这样做。

视图只不过是一个别名查询。因此,任何视图,尽管看起来微不足道,但如果编写不当,都可能导致服务器崩溃。执行时间与连接表的数量不成正比,而是与索引的质量成正比*.

副作用:默认索引可能不是最有效的索引。


*当表变大时,表的大小也开始变得重要,如数百万条记录