小编Rol*_*DBA的帖子

重复列以加快查询速度?

标题没有太大意义,但我想不出更好的标题来解决这个问题。

我有以下表格

项目

  • ID
  • 姓名

顾客

  • ID
  • id_project
  • 姓名

付款

  • ID
  • id_customer
  • 日期

当用户进入系统时,他将有权访问某个项目。现在,我想列出该项目的所有付款,这应该很容易:

SELECT FROM payments where id_customer in (SELECT id from customers where id_project = 5)
Run Code Online (Sandbox Code Playgroud)

我的问题是:如果以这种方式向支付表添加一列 id_project 不是更好,那么查询会更容易和更快。

normalization database-design

34
推荐指数
3
解决办法
8702
查看次数

应该避免 dbo 模式吗?

当涉及到 dbo 架构时:

  • 在创建数据库对象时避免使用 dbo 模式是最佳实践吗?
  • 为什么应该避免或应该避免 dbo 模式?
  • 哪个数据库用户应该拥有 dbo 模式?

schema sql-server-2008 sql-server best-practices

33
推荐指数
4
解决办法
3万
查看次数

PostgreSQL 在本地运行,但我无法连接。为什么?

最近将我的机器从 Mac OS X Lion (10.7.4) 更新到 Mountain Lion (10.8),我认为它破坏了我的 PostgreSQL 安装。它最初是通过 Homebrew 安装的。我不是 DBA,但希望有人能告诉我如何解决这个问题。

我无法连接(但在前 Mountain Lion 之前能够连接):

$ psql -U rails -d myapp_development
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)

但是 Postgres 显然还在运行:

$ ps aux | grep postgres
meltemi          2010   0.0  0.0  2444124   5292   ??  Ss   Wed01PM   0:00.02 postgres: rails myapp_development [local] idle    
meltemi           562   0.0  0.0  2439312    592   ?? …
Run Code Online (Sandbox Code Playgroud)

postgresql psql mac-os-x

33
推荐指数
2
解决办法
15万
查看次数

将 Oracle DMP 文件导入到全新安装的 oracle

一位客户向我们发送了一个我们需要对其进行测试的 Oracle 数据库。我们不使用 Oracle 或拥有任何内部 Oracle 专业知识。

我们需要设置数据库,以便我们可以连接到它并调试问题。

我全新安装了 Oracle 9(客户端运行的版本)和管理工具。

对于我的一生,我无法让它导入数据。不应该这么复杂。我一定是弄错了。

我试过了:

imp 'sys/password AS SYSDBA' file=c:\database.dmp full=yes log=implog.txt
Run Code Online (Sandbox Code Playgroud)

并得到:

Connected to: Personal Oracle9i Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

Export file created by EXPORT:V09.02.00 via conventional path

Warning: the objects were exported by SYSTEM, not by you

import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
. importing SYSTEM's objects into SYS
. importing …
Run Code Online (Sandbox Code Playgroud)

oracle import

32
推荐指数
4
解决办法
20万
查看次数

如何更改 phpmyadmin 中的默认存储引擎?

我几乎只在我的应用程序中使用 InnoDB。但是,如果我在设置表时不小心,我会忘记更改它并且 phpmyadmin 坚持使用 MyISAM。有没有办法更改默认存储引擎?

mysql innodb myisam phpmyadmin

31
推荐指数
1
解决办法
5万
查看次数

使用 SQL Server 进行负载平衡

当今存在的在 Windows Server 上执行 Microsoft SQL Server 负载平衡并对任何编程访问透明的方法。这是内置的还是必须购买解决方案?

我试图找出今天是否有一个解决方案,从 Web 服务器或其他数据库访问 SQL Server 的角度来看,它使这变得非常容易。

sql-server

31
推荐指数
2
解决办法
7万
查看次数

innodb_file_format 梭子鱼

我有几个问题要问那些更熟悉的人。尽管支持 Barracuda,但我的大多数实例都在运行 Antelope。

我正在寻找一些压缩 innodb 表的方法。我的理解是这仅在 Barracuda 格式下可用。

  1. 我看到 innodb_file_format 是动态的,所以我可以在没有反弹的情况下切换。我应该知道这样做是否有任何影响。我只能说这意味着将使用该格式创建新表或随后更改的表。这一切都正确吗?
  2. 我希望不必经过并转换我所有的表。在同一个表空间中共存羚羊表和梭鱼表是否符合犹太教规?即使它有效,是否有任何问题需要注意?

从我读过的和从我的测试中收集到的答案是:是的。是的。我不知道。

更新

自从这篇文章以来,我一直在各种情况下运行一些动态表和一些压缩表,没有出现问题。此外,我 当时忽略了阅读http://dev.mysql.com/doc/refman/5.5/en/innodb-file-format-identifying.html

启用给定的 innodb_file_format 后,此更改仅适用于新创建的表而不是现有的表。如果您确实创建了一个新表,则包含该表的表空间将使用该表功能所需的“最早”或“最简单”文件格式进行标记。例如,如果您启用文件格式 Barracuda,并创建一个未压缩且不使用 ROW_FORMAT=DYNAMIC 的新表,则包含该表的新表空间将被标记为使用文件格式 Antelope。

因此,即使您允许 Barracuda,表也将创建为 Antelope。混合是不可避免的,除非您将每个表指定为 row_format 动态或压缩表。

没有迹象表明您应该在引入第一个 Barracuda 表时进行完整的转储和重新加载(例如在升级 mysql 的主要版本时推荐)

mysql innodb mysql-5.5

31
推荐指数
3
解决办法
6万
查看次数

'ibfk' 在 MySQL 中代表什么?

如果我在 phpmyadmin 中为表 'photos' 创建外键约束,我后来看到该约束名为 'photos_ibfk_1',下一个约束名为 'photos_ibfk_2',等等。从这里我收集到 [tablename]_ibfk_constraintIndex 是MySQL 中数据库约束的约定。这样对吗?IBFK 代表什么?

mysql innodb foreign-key constraint

31
推荐指数
2
解决办法
3万
查看次数

表分区有何帮助?

我很难理解表分区的优缺点。我即将开始一个项目,该项目将有 8 个表,其中一个将是主数据表,将包含 180-260 百万条记录。因为它将是正确索引的表,所以我正在考虑将表记录限制为 2000 万,这样我将不得不创建 9-13 个表。

但我不太确定它将如何提高性能,因为它们将位于同一台机器上(32GB RAM)?

我正在使用 MySQL 并且表将是 MyISAM 并且大表将在 id 字段上有索引,并且没有进一步的复杂性,例如全文搜索等。

还请阐明表分区与数据库分区。

mysql myisam performance database-design partitioning

30
推荐指数
2
解决办法
2万
查看次数

Amazon RDS for MySQL 与在 Amazon EC2 实例上安装 MySQL

在工作中,我们将所有网络服务器托管在 Amazon EC2 上,并且通常使用与 Apache 网络服务器安装在同一台机器上的 MySQL 数据库,并在localhost. 我们现在需要将我们的数据库迁移到我们的系统之一的自己的服务器上。我有两种解决方案可供选择:使用Amazon RDS,或者只是启动一个新的Amazon EC2 机器并在其上安装 MySQL。

RDS 是与 EC2 同一家公司提供的专用数据库服务,似乎应该是更好的选择。但是,当我查看这两个选项的定价时(请参阅http://aws.amazon.com/ec2/pricinghttp://aws.amazon.com/rds/pricing),似乎 RDS 服务器的成本几乎对于具有相同规格的盒子,是 EC2 服务器的两倍。

鉴于我能够自己处理备份,并且 EC2 提供了与 RDS 所需的相同的扩展实例的能力,我完全看不出有任何理由使用 RDS 而不是 EC2。不过,似乎我可能遗漏了一些重要的东西,因为如果我是对的,那么没有人会使用 RDS。我到底缺少什么,与在 EC2 实例上安装自己的数据库相比,RDS 有哪些优势?

mysql amazon-ec2 amazon-rds

30
推荐指数
2
解决办法
2万
查看次数