在SQL Server 2008中,常常会发生数据库数据过大的情况,此时则需要对表进行处理,通常可采用人工分割表的方法优化性能。下列有关分割表的说法,错误的是( )。

admin2021-09-16  25

问题 在SQL Server 2008中,常常会发生数据库数据过大的情况,此时则需要对表进行处理,通常可采用人工分割表的方法优化性能。下列有关分割表的说法,错误的是(    )。

选项 A、水平分割后,得到的子表结构相同
B、水平分割后,查询表中所有数据时需要使用JOIN操作
C、垂直分割后,所有表中均需保留原有表的主码
D、当查询表中所有数据时,使用分割表方法会增加查询表达式的复杂度

答案B

解析 分割表增加了维护数据完整性的代价。分割表分为水平分割表和垂直分割表两种。水平分割表:一种是当多个过程频繁访问数据表的不同行时,水平分割表,并消除新表中的冗余数据列;另一种是当主要过程要重复访问部分行时,最好将被重复访问的这些行单独形成子集表(冗余储存),这在不考虑磁盘空间开销时显得十分重要,但在分割表以后,增加了维护难度,要用触发器立即更新、或用存储过程及应用代码批量更新,这也会增加额外的磁盘I/O开销。垂直分割表(不破坏第三范式):一种是当多个过程频繁访问表的不同列时,可将表垂直分成几个表,减少磁盘I/O(每行的数据列少,每页存的数据行就多,相应占用的页就少),更新时不必考虑锁,没有冗余数据。缺点是在插入或删除数据时要考虑数据的完整性,用存储过程维护。另一种是当主要过程反复访问部分列时,最好将这部分被频繁访问的列数据单独存为一个子集表(冗余储存),这在不考虑磁盘空间开销时显得十分重要,但因此增加了重叠列的维护难度,要用触发器立即更新、或用存储过程及应用代码批量更新,这也会增加额外的磁盘I/O开销。垂直分割表可以达到最大化利用Cache的目的。水平分割后,查询数据需要使用UNION操作。垂直分割后,查询数据需要JOIN操作。
转载请注明原文地址:https://jikaoti.com/ti/4gu7FFFM
0

最新回复(0)