2 wxlcanary wxlcanary 于 2015.06.30 01:56 提问

如何设计数据库能优化查询速度

请教一个数据库设计相关的问题。为一个中型公司设计数据仓库,架构是从Staging databases -> Central OLTP Database -> Central OLAP Database, 最终在OLAP数据库上运行报表。所有的数据库用的都是SQL Server 2012。

设计1.尽量放主子表,保证主表和自标的Key都是数字。
主表: Account
字段:ID, AccountNumber, AccountName, AccountStatuSID, AccountPaymentTypeID ...........
A1 1010011 AN1 1 1
A2 1010012 AN2 3 2

子表1:AccountStatue
字段: AccountStatusID, AccountStatusName
1 Active
2 Inactive
3 Pending

子表2: AccountPaymentType
字段:AccountPaymentTypeID, AccountPaymentTypeName
1 Debit
2 Credit

其他子表就不一一举例了

设计2. 就一个主表,直接显示Name
主表: Account
字段:ID, AccountNumber, AccountName, AccountStatuS, AccountPaymentType ...........
A1 1010011 AN1 Active Debit
A2 1010012 AN2 Pending Credit

设计3. 就一个主表,显示ID和Name。报表运行时Where条件用ID
主表: Account
字段:ID, AccountNumber, AccountName, AccountStatuSID, AccountStatuS, AccountPaymentTypeID, AccountPaymentType ...........
A1 1010011 AN1 1 Active 1 Debit
A2 1010012 AN2 3 Pending 2 Credit

如果基于这种架构,如何设计OLAP数据库能得到最好的数据查询性能哪,并且易于ETL过程的Troubleshooting? 数据量几十G,几百G或几个T各适用哪个设计?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
[经验之谈]数据库查询速度优化之解决技巧
摘要 在上篇文章漫谈数据库查询速度优化方案我们讲到了,数据优化的几种方案,现在这篇文章,我们就实际来看看,如何实际到具体的操作上.也就是我们在写数据时我们应该注意些什么. 1、对查询进行优化,应尽可能避免全表扫描 首先应考虑在 where 及 order by 涉及的列上建立索引。 下面我们来以一个表中177条数据比较一下,全表扫描与建立索引之后性能的一个比较. 1.1 全表查询
数据库提高查询效率(较大数据)优化方法
1、数据库设计方面: (1)建立索引 (2)分区(MySQL,如按时间分区) (3)尽量使用固定长度字段和限制字段长度。(如VARCHAR2(10);优势:①降低物理存储空间 ②提高数据库处理速度 ③附带校验数据是否合法功能 2、在数据库I/O方面: (1)增加缓冲区 (2)如果涉及表的级联,不同的表存储在不同磁盘上,以增加I/0速度 3、在SQL语句方面: (1)优化SQL语句,
在数据库中条件查询很慢的时候,如何优化
在数据库中条件查询很慢的时候,如何优化 1.建索引(a 提高查询检索的性能b 创建唯一索引c 创建主键d 归类) 2.减少表之间的关联 3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询, 应该走索引,把数据量大的表排在前面 4.简化查询字段,没用的字段不要,已经对返回结果的控制,尽 量返回少量数据
C#中优化数据查询速度
方案一:采用DataSet作为数据源: 思路1:将List转换为DataSet,然后用DataSet作为数据源。 转换函数如下: publicstatic DataSet ToDataSet(IList p_List)         {             DataSet result = new DataSet();             DataTabl
为了提高数据库的处理速度,怎样设计数据库?
本文首先讨论了基于第三范式的数据库表的基本设计,着重论述了建立主键和索引的策略和方案,然后从数据库表的扩展设计和库表对象的放置等角度概述了数据库管理系统的优化方案。  关键词: 优化(Optimizing) 第三范式(3NF) 冗余数据(Redundant Data) 索引(Index) 数据分割(Data Partitioning) 对象放置(Object Placement)  1 引言 
android中数据库查询优化方法
SQLite是个典型的嵌入式DBMS,它有很多优点,它是轻量级的,在编译之后很小,其中一个原因就是在查询优化方面比较简单,它只是运用索引机制来进行优化的,经过对SQLite的查询优化的分析以及对源代码的研究,我将SQLite的查询优总结如下:         一、影响查询性能的因素:         1. 对表中行的检索数目,越小越好         2. 排序与否。
系统优化之---分区表加速查询速度和删除速度
1、删除表里的数据最用下面语句 alter table t_name drop partition p_name; alter table t_name truncate partition p_name; delete 方式弊端:消耗大量的系统资源和无法释放空间 SQL> create user test identified by test account unlock; 
数据库建立索引为什么会加快查询速度
首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度。     添加索引的话,首先去索引列表中查询,而我们的索引列表是B类树的数据结构,查询的时间复杂度为O(log2N),定位到特定值得行
oracle分表分区提高检索速度的相关方法
此文从以下几个方面来整理关于分区表的概念及操作:         1.表空间及分区表的概念         2.表分区的具体作用         3.表分区的优缺点         4.表分区的几种类型及操作方法         5.对表分区的维护性操作. (1.) 表空间及分区表的概念 表空间:   是一个或多个数据文件的集合,所有的数据对象都存放在指
四种高效数据库设计思想——提高查询效率
【开篇】设计数据库表结构时,我们首先要按照数据库的三大范式进行建立数据库。 1. 1NF每列不可拆分 2. 2NF确保每个表只做一件事情 3. 3NF满足2NF,消除表中的依赖传递。 三大范式的出现是在上世纪70年代,由于内存资源比较昂贵,所以严格按照三大范式进行数据库设计。而如今内存变得越来越廉价,在考虑效率和内存的基础上我们可以做出最优选择以达到最高效率。建立数据库