- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道在使用 Yii 和 mysql 表时什么是更好的方法(性能方面):
基本上,我要问的是:当您执行查询时,Yii 会将所有对应的表提取到对象中,因此当单个表有很多关系时,是否会降低性能?
一个更普遍的问题是:在处理 1 vs 多个表和外键时什么是好的实践和更聪明的方法(同样是性能......)
最佳答案
如果性能是您设计策略中唯一的标准,您会选择 1。这是一个非常糟糕的选择,这会给您带来很多问题。
数据库的设计应该考虑到规范化,所以毫无疑问,您必须选择选项 2!
更新
规范化和非规范化的例子:假设我们有一张 DVD 租赁表,并且想跟踪谁租了 DVD:
平板:
CREATE TABLE DVD (
DvdId INT NOT NULL AUTO_INCREMENT,
DvdTitle varchar(64),
Rental1 varchar(64),
Rental2 varchar(64),
Rental3 varchar(64),
Primary Key(DvdId)
);
有 3 个租赁条目的空间,之后有麻烦。除此之外,当客户的电话号码需要一个额外的字段时,必须多做3个字段。
第一步归一化:
CREATE TABLE DVD (
DvdId INT NOT NULL AUTO_INCREMENT,
DvdTitle varchar(64),
Primary Key(DvdId)
);
CREATE TABLE Rentals (
RentalId INT NOT NULL AUTO_INCREMENT,
DvdId INT NOT NULL,
CustomerName varchar(64),
RentalDate DateTime,
Primary Key(RentalId)
);
这样更好,但仍未完全归一化。如果客户两次租用同一张 DVD 怎么办?然后在租金表中会有一个双重客户条目。
最后:
CREATE TABLE DVD (
DvdId INT NOT NULL AUTO_INCREMENT,
DvdTitle varchar(64),
Primary Key(DvdId)
);
CREATE TABLE Rentals (
RentalId INT NOT NULL AUTO_INCREMENT,
DvdId INT NOT NULL,
CustomerId INT NOT NULL,
RentalDate DateTime,
Primary Key(RentalId)
);
CREATE TABLE Customers (
CustomerId INT NOT NULL AUTO_INCREMENT,
CustomerName varchar(64),
Primary Key(CustomerId)
);
关于php - 多个 MSQL 表和外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12741447/
我从表 A 中选择数据,我想要的是使用循环插入该数据。 这是我的代码: $getlvls = "SELECT * FROM `access_chart` WHERE `ac_id`='$dat
我目前正在为 iOS 开发一个网络应用程序,但该应用程序无法正确连接。 当我尝试登录时,我收到以下 iOS 弹出窗口:index.html 错误。 当 PHP 文件在线时, 这是我的一些代码: 连接.
我想知道在使用 Yii 和 mysql 表时什么是更好的方法(性能方面): 1 个包含所有列的表格 具有外键关系的多个表(在它们之间分布列) 基本上,我要问的是:当您执行查询时,Yii 会将所有对应的
这个问题已经有答案了: Problem with adding rows with JDBC and MySQL? (1 个回答) 已关闭 4 年前。 我在更新 mssql 给出的结果集时遇到问题。
http://localhost:3000/genre 我正在使用 Instant Rails,这是我第一次引入脚手架。 所以一切看起来都工作正常,我做了我自己的 RoR 页面等,今天我进来,当我转到
你能帮我通过选择我的 SQL 来计算速度吗:速度根据这个: 我的数据库如下所示: MySQL 选择如下所示: $sql = "SELECT SUM(value) FROM project_has_ta
我可以从以下查询中获得以下输出- SELECT ( CASE WHEN ta.Battery = 'HVA' THEN 'Huawei
对于我的内容输出,我在表列“Positie”(位置)中有三个选项:Keeper、Verdediging(防守者)、Middenvelder(中场)和 Aanvaller(攻击者)。 在我的输出中,我希
我们正在使用 SQL Server,快照隔离可能是提高性能和解决一些死锁问题的好方法。 假设我们确实需要更改为快照隔离,我似乎找不到在 Springs @Transactional 上启用快照隔离的简
几年前我经常使用 PHP,最近决定更新我的技能,我正在尝试构建一个论坛网站,我在使用新的 PDO 方法插入从用户收集的数据时遇到了问题回到 table 上。我使用旧的 mysql 方法(据我所知,从
这个问题在这里已经有了答案: When to use single quotes, double quotes, and backticks in MySQL (13 个答案) Are you al
Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value.} 我收到此错误
我正在处理个人收件箱。这是我的收件箱表: 收件箱 email -- createdDate -- message mail1@test.com -- 12/02/2017 -- message1 ma
我正在 Ubuntu 12.04 上设置 Nginx+PHP+MYSQL。 我用过 apt-get install php5-mysql 安装 PHP 的 MySql 模块。然而,一切似乎都已安装并启
我需要在 Windows 上安装 Ruby 才能访问我将要处理的项目。我按照说明here进行操作安装它但是当我开始编写脚手架时(12:50),我收到以下错误。 注意:我按照视频中提到的说明进行操作。唯
我的本地开发计算机上当前有一个应用程序正在运行。它使用 Wildfly 10、MySQL 5.7 和 Hibernate。我的应用程序从 Wildfly 中查找“AppDS”数据源。 我在 Ope
我需要从数据库 team_1 和 team_2(足球比赛赛程)中选择并按比赛分组 $query = mysql_query("SELECT * FROM fixtures
我很难找到一个解决方案来直接打开存储过程到 MSQL 管理工作室,以便从我的 C# 应用程序 (winform) 修改新的 SQLQuery。 这是我的代码: Process openSQL = ne
目前我有一个服务器 - Amazon EC2 实例类型。通过AWS控制台,我们可以监控我们的实例(服务器)CPU利用率、磁盘读取等。 有什么方法可以监控我的应用程序服务 - 比如 tomcat、mys
使用 Ubuntu 16.04 运行 VirtualBox,其中我有一个安装了 Apache2 和 PHP 的 Docker 容器。 MYSQL已安装在主机上(VirtualBox上的ubuntu)。
我是一名优秀的程序员,十分优秀!