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

标签 mysql sql database performance rdbms

<分区>

最近,我在将数据与 Java 对象绑定(bind)到数据库时遇到了性能问题。特别是当涉及到很多 FK-PK 关系时,将数据从数据库解析为 Java 代码。我意识到这个问题并通过创建数据库 View 并创建 POJO 来映射 View 来解决性能下降问题。

我在网上做了一些研究,但找不到好的答案:How does database(I am using mysql) keeps the fast data querying speed in views?

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

最佳答案

索引。

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

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

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


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

关于mysql - 当所有表之间存在多个FK-PK关系时,数据库 View 如何保持快速查询速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33264022/

相关文章:

sql - Mysql DateTime 组按 15 分钟

database - 客户端数据库场景中的行级安全性

php - 如何检索 PDO 错误消息?

php - 随机SQL记录同时排除特定记录

mysql - 使用 Sequelize 创建数据库索引

mysql - 我如何只返回那些欠我钱的客户(在 mySQL 中)?

MySQL一次查询选择多个表

database - 键值存储和完整的 SQL 数据库之间有什么区别吗?

ruby-on-rails - Rails 中的每日轮换产品

php - 尝试通过 PHP/MySQL 下载 Blob