gpt4 book ai didi

php - 创建 View 还是使用 innerjoins?

转载 作者:IT老高 更新时间:2023-10-29 00:15:20 26 4
gpt4 key购买 nike

我有一个规范化的数据库,外键/主键为一对多的数据库。

我计划使用 PHP 访问此数据库以进行基本的前端/后端显示。现在,我的问题来自这两个示例查询:

CREATE VIEW `view` AS
SELECT
functiondetails.Detail,
functionnames.ID,
functionnames.FunctionName,
functionnames.Catogory
FROM functiondetails
INNER JOIN functionnames ON functiondetails.AsscID = functionnames.ID

SELECT
functiondetails.Detail,
functionnames.ID,
functionnames.FunctionName,
functionnames.Catogory
FROM functiondetails
INNER JOIN functionnames ON functiondetails.AsscID = functionnames.ID

查询中没有错误,因为我已经成功运行了这两个查询,但我的总体问题是:

如果我计划不断从我的数据库中引用大量信息。创建一个 View 会不会更容易,然后它会一直使用新添加的信息进行更新,或者在我的实际 php 上进行第二个查询是否更好。示例:

$Query = $MySQli->prepare("
SELECT
functiondetails.Detail,
functionnames.ID,
functionnames.FunctionName,
functionnames.Catogory
FROM functiondetails
INNER JOIN functionnames ON functiondetails.AsscID = functionnames.ID
")
$Query->execute();
$Results = $Query->fetch_results();
$Array = $Results->fetch_array(MYSQLI_ASSOC);

还是从我的观点中选择?

$Query = $MySQLi->prepare("SELECT * FROM `view`");
$Query->execute();
$Results = $Query->fetch_results();
$Array = $Results->fetch_array(MYSQLI_ASSOC);

那么,哪种方法更适合用于查询我的数据库?

最佳答案

Viewsabstraction layer创建抽象层的通常原因是为您提供一种工具,让您的生活更轻松。

使用 View 的一些重要优势包括:

  1. 安全
    您可以控制谁有权访问 View ,而无需授予他们访问基础表的权限。

  2. 澄清
    很多时候,列标题的描述性并不尽如人意。 View 可让您更加清晰地返回数据。

  3. 性能
    表现明智,观点不会对你造成负面伤害。但是,由于 MySQL 不支持 materialized views,因此使用 View 不会带来性能提升。 .

  4. 易于编码
    View 可用于重用复杂查询,减少用户出错的空间。

  5. 易于管理
    每当您的表架构发生变化时,它都会让您的生活更轻松。

    例如,假设您有一个包含待售房屋的表 homes_for_sale,但后来您决定希望该表处理您曾经有待售/目前有待售的所有房屋, all_homes。显然,新表的架构将与第一个大不相同。

    如果您有大量来自 homes_for_sale 的查询,现在您必须检查所有代码并更新所有查询。这会让您面临用户错误和管理噩梦。

    解决更改的更好方法是用同名 View 替换表。该 View 将返回与原始表完全相同的架构,即使实际架构已更改。然后,如果需要,您可以按照自己的节奏检查代码,并更新查询调用。

关于php - 创建 View 还是使用 innerjoins?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18443543/

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