设计MySQL数据库的提示

时间:2016-02-19 06:35:28

标签: mysql database performance join

我正在为一个上市网站设计一个mysql数据库。这是我的第一次,我做了一些谷歌搜索:) 我想交叉检查我的方法是否有任何问题。

基本上,我将有5张桌子。让我们说

  1. Studio(实际工作室数据点)
  2. 工作室设施(如,交通,水等)
  3. 工作室图片
  4. 工作室评论。 (姓名,明星等。)
  5. 位置&地点(城市,城市方向,地区,例如班加罗尔,北班加罗尔,希伯来)。
  6. 所以Studio表将保存主记录。设施,图像和评论将使用工作室作为FK保存数据。 位置ID将保存在录音室记录中。

    我现在的问题是,如果我要显示所有希伯来工作室的列表,我将必须执行所有5个表格的连接,以显示工作室数据,图像,评论和设施。

    1)这样可以吗?你认为这种方法有任何潜在的问题吗?有没有更好的方法?
    2)随着记录数量的增加,查询执行时间会增加吗?

    由于

2 个答案:

答案 0 :(得分:0)

这看起来像一个可靠的方法,数据库旨在使用连接,这些是合适的。非规范化将导致更多问题,尤其是与当前设计相关的数据完整性,

查询会因更多数据而变慢吗?当然他们会,但任何设计都是如此。通过网络或互联网发送10 gig数据将比发送10个字节慢。

您不会问,但是您可以采取哪些措施来防止查询速度慢得令人无法接受?是。首先,您需要确保将在where子句中频繁出现的外键和字段以及PK。这足以防止大多数简单查询的可怕性能。

您应该做的另一件事是阅读一本关于您正在使用的特定数据库后端的性能调优的好书。我读过的大多数都至少有一章关于设计性能查询。阅读它并重新阅读并重新阅读它,直到它沉入你的骨头,你不会考虑以任何其他方式编写查询。

许多数据库被认为很慢,因为他们的开发人员无法编写高性能查询,并且连接受到指责。了解sargabilty。了解索引的工作原理以及索引的权衡取舍。理解表在性能受损之前的宽度(提示有时一对一关系中的两个表比使用一个表的表更快更快。)。

如果没有扎实的性能调优基础,就无法有效地设计数据库。

答案 1 :(得分:-1)

您可以使用一个主表(此处为 Studio ),并可以将引用键用于所有其他表。

最好将normalization的表格分开。

规范化的好处

  • 消除数据冗余
  • 提高绩效
  • 查询优化
  • 由于一个表中的列数较少,更新速度更快
  • 指数改进

研究规范化,您将很好地构建数据库。