Database 在设计时检查表的性能

Database 在设计时检查表的性能,database,database-design,Database,Database Design,在数据库中设计表时,您将如何确定其性能?在创建自身时,我们如何确保它的性能良好。我假设您使用的是SQL数据库 基本上你不知道在设计阶段的表现。为了能够度量性能,表中需要大量数据。但是有几件事需要考虑,以确保性能尽可能好 您希望表中有多少行?如果只有几百行,你不必想得太多。但是,如果您希望有数亿行,那么您需要更多地考虑性能,索引是其中的一个重要部分 这张表读写重吗?如果只对其进行写入,则不需要索引,因为它们会导致写入速度变慢。但如果它读起来很重,则需要索引 如何连接到其他表?您需要外键上的索引。但

在数据库中设计表时,您将如何确定其性能?在创建自身时,我们如何确保它的性能良好。

我假设您使用的是SQL数据库

基本上你不知道在设计阶段的表现。为了能够度量性能,表中需要大量数据。但是有几件事需要考虑,以确保性能尽可能好

  • 您希望表中有多少行?如果只有几百行,你不必想得太多。但是,如果您希望有数亿行,那么您需要更多地考虑性能,索引是其中的一个重要部分
  • 这张表读写重吗?如果只对其进行写入,则不需要索引,因为它们会导致写入速度变慢。但如果它读起来很重,则需要索引
  • 如何连接到其他表?您需要外键上的索引。但除此之外,您还需要确保其他表具有正确的索引
  • 键上的索引。通常,您需要在所有主键和外键上建立索引
  • 其他列上的索引。如果只写入表并基于主键和/或外键获取数据,则不应添加其他索引。但如果要在数据中搜索,则需要为这些列添加索引。如果要同时使用多个值进行搜索,可能需要添加复合索引
  • 最小化索引的数量。但由于两个原因,您不想添加到许多索引中。首先,每个索引都会降低写入性能。第二,通常更成问题的是,索引中的数据应该在RAM中可用,以最大限度地提高性能。在大表上加载索引可能会耗尽RAM,数据库需要从磁盘读取索引,这是一个很大的性能问题
  • 最小化字符串索引中的数据。您可能只能索引子字符串,以最小化索引的大小。但是你需要确保你索引的子字符串是唯一的,否则你会得到很多点击率。或者,您可能希望添加另一个具有字符串哈希代码的列,并为其编制索引。但是,您只能对整个字符串使用索引,并且还需要考虑大小写
  • 询问。您的查询应该尽可能使用索引。但在某些情况下,最好不要使用它。例如,每月完成一次的报告,这些报告不需要时间。为这些报告添加额外的索引可能会导致上述问题
  • 数据库。不同的数据库表现不同。上面提到的大部分内容或多或少都是通用的,但是需要考虑一些特定于数据库的事情
  • 测试和理解查询的执行。当您测试查询时,需要在数据库中有大量数据。您是否希望表中有1000万行数据?用5000万行测试它。并了解查询是如何执行的,同样是数据库中的数据负载
  • 正如你所看到的,有很多事情需要考虑。但也有好消息,大多数东西都可以而且应该在需要时更新。只要它至少是第三正常形式,通常就可以修复问题