我们可以获得一系列基本优化技术(从建模到查询,创建索引,视图到查询优化).有一个列表,每个答案一个技术,这将是很好的.作为一个业余爱好者,我会发现这非常有用,谢谢.
为了不太模糊,假设我们使用的是MySQL或Oracle等maintstream数据库,并且数据库将在~10个表中包含500,000-1m左右的记录,其中一些具有外键约束,所有使用最典型的存储引擎(例如:InnoDB for MySQL).当然,定义PK等基础知识以及FK约束.
了解索引,并正确使用它们.一般而言*,请遵循以下准则:
每个表都应该有一个聚簇索引
用于过滤器和排序的字段是索引的良好候选者
更多选择性字段是更好的索引候选者
为了在关键查询上获得最佳性能,请为这些查询设计"覆盖索引"
确保您的索引实际被使用,并删除那些不是
如果你的表有15个字段,并且你创建了15个索引,每个只有一个字段,那你就错了:)
*如果你知道自己在做什么,这些规则有一些例外.我的经验是Microsoft SQL Server,但我认为这些建议的大部分仍然适用于不同的RDMS.
IMO,到目前为止,最好的优化是让数据模型适合构建它的问题域.如果没有,则产生的症状是难以编写或复杂的查询,以便获得所需的信息,并且在针对数据库构建报告时通常会自行查找.因此,在设计数据库时,有助于了解用户希望从系统中获取的信息的类型和性质,例如报告.
在谈论数据库设计时,请查看数据库规范化,例如维基百科文章:普通表格.
如果您有一个好的设计,但仍需要优化性能,请尝试Denormalisation.
如果您有特定需求未被关系模型有效覆盖,请查看NoSQL术语涵盖的其他模型.