- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有两个这样的表:
Employers (id, name, .... , deptId).Depts(id, deptName, ...).
But Those data is not going to be modified so often and I want that a query like this
SELECT name, deptName FROM Employers, Depts
WHERE deptId = Depts.id AND Employers.id="ID"
尽可能快。
我想到了两种可能的解决方案:
反规范化表:
尽管使用这个解决方案我会失去一些“规范化数据库”的巨大优势,但这里的性能是必须的。
为非规范化数据创建一个 View 。
我将保持数据标准化(这是我的问题),在该 View 上的查询性能会比没有该 View 时更快。
或者以另一种方式提出相同的问题,每次您对 View 进行查询时, View 都会被“解释”,或者 View 在 DBA 中的工作原理是什么?
最佳答案
通常,除非您“具体化”一个 View ,这是某些软件(如 MS SQL Server)中的一个选项,否则该 View 只是转换为对基表的查询,因此不会比原始 View 更快或更慢(减去翻译查询所需的时间极少,与实际执行查询相比微不足道。
您怎么知道您遇到了性能问题?你在负载下分析它吗?确认性能瓶颈是这两张表了吗?通常,在您获得硬数据之前,不要假设您知道性能问题从何而来,也不要花任何时间进行优化,直到您知道您正在优化正确的事情 - 80% 的性能问题来自 20 % 的代码。
关于sql - View 在 DBM 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/428175/
我正在尝试在 OS X (Mavericks) 中运行 celery worker。我激活了虚拟环境(python 3.4)并尝试用这个参数启动 Celery: celery worker --app
对于我当前的项目,我需要在磁盘上存储一个小数据库,我会在程序运行时读取并写入一次。 我研究了 perls DBM 功能,据我了解,它仅提供存储在磁盘上的散列,每次读写都直接到磁盘。 我的问题是:我不能
这样做有问题吗: import time import dumbdbm db = dumbdbm.open('db.db', 'c') # modify the persistent dict / "
当使用 DBM 数据库(例如 Berkeley 或 GDBM)时,是使用更少的长字符串还是更多的短字符串来存储数据更好?无论哪种方式,我都可以轻松地构建我的数据。我正在寻找性能意义上的“更好”,但我也
有人有适用于我的程序的 setup.py 文件吗?我的整个程序是here 。有没有办法导入其中一个 dbm?我已经尝试了很多方法来使我的 exe 工作。这只是我尝试过的最后一个。 这是我用来将程序转换
在 python 2.6.5 中,dbm 实例没有 __nonzero__ 或 __len__ 方法,那么为什么它会将 false 计算为 bool 值? >>> a = dbm.open( 'foo
我想以 dbm 显示信号强度。但是用我的代码我总是成为结果-1。但是当我在设置中看到信号强度时,它大约是 -81..你能找出错误吗?谢谢! public class MainActivity exte
我得到了一个名为 datamodel.dbm 的文件 在那个文件中,有很多 XML。 它使用以下 XML 打开: 我是 SQL Serve
我有一个精简的实时 Linux 盒子,可以与一些硬件接口(interface)。 配置文件是 *.dbm 文件,我无法访问它们。它们似乎是某种键值数据库,但我尝试过的每个库都是空的。 我尝试了 Per
我从来没有做过交易(在编程方面),因此我不知道是我的脚本有问题还是其他问题: #!/usr/bin/env perl use warnings; use 5.012; use DBM::Deep; m
我在想,Python 的原生 DBM 应该比 NOSQL 数据库(如 Tokyo Cabinet、MongoDB 等)快得多(因为 Python DBM 的功能和选项较少;即系统更简单)。我用一个非常
我正在尝试将一个字典的字典添加到搁置文件中: >>> d = shelve.open('index.shelve') >>> d >>> print(list(d.keys())) [] >>> d
我继承了一段代码,其中包含一个清空数据库的代码片段,如下所示: dbmopen (%db,"file.db",0666); foreach $key (keys %db) { delete $db
我刚刚为已经包含大约100个域的Grails 1.3.7应用程序安装了数据库迁移插件。我运行了最初的dbm-generate-gorm-changelog,它生成了一个看起来不错的changelog.
当我运行"grails dbm-update --dataSource=production"时,出现以下异常: org.springframework.beans.factory.NoSuchBea
我正在使用grails数据库迁移来更新我的生产数据库,但是它表现出一种奇怪的行为。我运行了dbm-gorm-diff,它似乎可以正常工作,但是由于某些原因,我的prod db正在更新,而没有使用'db
这是正在进行的项目的一部分...拆分域对象,以便多个应用程序可以使用它们。域对象的数据库迁移文件与插件一起使用...但是我们希望这些应用程序能够在dbm更新期间引用它们。 我可以让应用程序识别插件的更
我的印象是,迁移脚本中的变更集是事务性的,但实际上,它们不是。 对于最简单的示例,创建一个基本的变更集条目,如下所示: changeSet(author: "some_email@server.com
假设我有两个这样的表: Employers (id, name, .... , deptId).Depts(id, deptName, ...). But Those data is not goin
尝试将我的程序转换为使用anydbm的可执行文件,并得到以下响应: Traceback (most recent call last): File "sliceReg.py", line 14,
我是一名优秀的程序员,十分优秀!