• 以 280W 数据为依据。对比SQL2008 表分区前和分区后的 T_SQL 效率


               一: 数据库的优化一直项目后期的重中之重,特别是当单表数据庞大到1000W时候。各种SQL语句执行效率都会慢很多。SQL 效率 与索引,行数据,列数据,以及Where 刷选字段类型 (效率 整数型大于字符串,时间等式)都很有关系。平时的优化 除了针对性增加非聚集索引,对字节较长的字符串 如:身份证号码进行整形处理存储。对大文本比如 信息正文进行单独表关联,对一些字段暂用的字节大小进行优化外。还可以对臃肿的表进行 水平切分以及垂直切分,或者对整库进行切分,主从读写分离等诸多手段。

              二:以 SQL 2008 企业版为例。单表数据量为380W,进行水平切分,分区处理 。应该能稍微对比出两者间的效率。

              三:如何建立分区表:参考大牛博客:ttp://blog.sina.com.cn/s/blog_614316190100egs2.html 

                   ps:值得注意的建立 分区方案 分区函数的时候 文件。文件组最好多建立一个。楼主在建立一样的时候报错。多建立一个文件就通过了。如图:

                            

                       分区函数和分区方案脚本:

    USE [SMSRoute] GO

    /****** Object:  PartitionFunction [partitionFunArea]    Script Date: 12/05/2013 22:27:09 ******/ CREATE PARTITION FUNCTION [partitionFunUserName](nvarchar(50)) AS RANGE LEFT FOR VALUES (N'ck_fengxiong_system', N'ck_hujiao_system', N'ck_jianfei_system', N'ck_yifubao_system', N'ck_zengzhi_system') GO

    USE [SMSRoute] GO

    /****** Object:  PartitionScheme [partitionSchemeUserName]    Script Date: 12/05/2013 22:27:45 ******/ CREATE PARTITION SCHEME [partitionSchemeUserName] AS PARTITION [partitionFunUserName] TO ([fengxiong], [hujiao], [zengzhi], [jianfei], [yifubao], [zengzhi]) GO

                 

                 四:以经典ROW_NUMBER 分页函数为对比。

                     

                         

                    PS: 由于数据比较少。对比不是很明显。当数据超过1000W的时候差距才会逐渐明显。

                    个人浅见,欢迎指正。

                      

  • 相关阅读:
    手把手教会你如何通过C#创建Windows Service
    推荐几款软件界面模型设计工具
    visual studio 2010小技巧
    C# 枚举在属性中运用
    C# Stream 和 byte[] 之间的转换
    推荐一款DataGridView的打印解决方案
    VB提高专辑VB编写自定义类(下)
    vb 怎么把长整型转字符串
    Android NAND: nand_dev_load_disk_state, restore failed: size required (3546398242485400641) exceeds device limit (6920
    VB中各种类型的转换
  • 原文地址:https://www.cnblogs.com/xiachong-0769/p/3460518.html
Copyright © 2020-2023  润新知