我需要根据表中的其他两列创建连接列。一列是年份(10个不同的值),一个是人的ID值(约150,000个不同的值)。这被ETL任务用作业务键,该任务不接受多个列作为键值,因此我需要在数据库中保留此值。
也就是说,我可以选择如何创建该值,我想知道订单(ID +年份或年份+ ID)是否会以任何方式影响性能。如果年份排在第一位,前四个字符将始终是有限的实际年份之一。如果ID先行,则每个用户都会更改。两者之间有什么区别吗?
此列将获得的唯一用法是在ETL加载期间,它将用于连接源表和登台表中的数据,以检查两者之间的差异。基础值将在下面的表格中,我计划在这些基础值上创建聚集索引。
示例数据:
╔══════════════╦══════════════╦═════════╦═════════╗
║ COMPOSITE_1 ║ COMPOSITE_2 ║ AC_YEAR ║ ST_ID ║
╠══════════════╬══════════════╬═════════╬═════════╣
║ 0000001|2005 ║ 2005|0000001 ║ 2005 ║ 0000001 ║
║ 0000001|2006 ║ 2006|0000001 ║ 2006 ║ 0000001 ║
║ 0000001|2009 ║ 2009|0000001 ║ 2009 ║ 0000001 ║
║ 0000001|2010 ║ 2010|0000001 ║ 2010 ║ 0000001 ║
║ 0000001|2012 ║ 2012|0000001 ║ 2012 ║ 0000001 ║
║ 0000001|2013 ║ 2013|0000001 ║ 2013 ║ 0000001 ║
║ 0000002|2005 ║ 2005|0000002 ║ 2005 ║ 0000002 ║
║ 0000002|2006 ║ 2006|0000002 ║ 2006 ║ 0000002 ║
║ 0000002|2007 ║ 2007|0000002 ║ 2007 ║ 0000002 ║
║ 0000002|2008 ║ 2008|0000002 ║ 2008 ║ 0000002 ║
║ 0000002|2009 ║ 2009|0000002 ║ 2009 ║ 0000002 ║
║ 0000002|2010 ║ 2010|0000002 ║ 2010 ║ 0000002 ║
║ 0000002|2012 ║ 2012|0000002 ║ 2012 ║ 0000002 ║
║ 0000002|2013 ║ 2013|0000002 ║ 2013 ║ 0000002 ║
║ 0000002|2014 ║ 2014|0000002 ║ 2014 ║ 0000002 ║
╚══════════════╩══════════════╩═════════╩═════════╝
问题一:在JOIN期间,Composite_1或Composite_2会给我带来更好的表现吗?
问题二:我是否需要索引复合列,如果是这样,我应该单独/与其他人一起做? SSIS任务将其用于内存中的JOIN,并且我计划将其作为ORDER BY包含在我的OLE DB Source组件中。
问题三:聚集索引是属于复合列,还是属于年份和ID列?编辑:或者,因为我知道年份和ID不会影响复合的顺序,我应该只包括这三个吗?
答案 0 :(得分:1)