C#+Sqlserver2008下分区表的使用

    随着数据的越来越多,系统也渐渐地慢起来了,我从网上简单看了一下,sqlserver2008有分区表这个概念了,下午就写了一个例子用来测试一下分区表的使用,首先我建立了两个表,一个用户信息表,一个电量信息表,用户信息表里边写入了100户居民,电量信息表里边写入了三年的每个用户的每小时一包的数据,数据都是随机生成的,只是为了让数据量更大一些。脚本和代码如下所示:

    

USE Partition_Test;
--我想创建两个表,第一个表是用户信息表 包含用户信息表和电量信息表
--第一个表包含的字段有 编号 用户姓名 用户编号
--第二个表包括 编号 起数 止数 差数电量 我想每个用户写入三年的电量 一个小时一包的话 100*365*3*24
--创建用户信息表
--CREATE TABLE YHXXB 
--(
  -- BH INT IDENTITY(1,1),
   --YHXM CHAR(20),
   --KHRQ DATETIME
--)
--电量信息表
--CREATE TABLE DLXXB(
 --BH INT IDENTITY(0,1),
 --YHBH INT,
 --QS FLOAT,
 --ZS FLOAT,
 --CSDL FLOAT,
 --SJRQ DATETIME
--)
--开始写入用户信息表
--INSERT INTO dbo.YHXXB
  --      ( YHXM, KHRQ )
--VALUES  ( '', -- YHXM - char(10)
  --        '2015-07-30 06:17:01'  -- KHRQ - datetime
    --      )
--INSERT INTO dbo.DLXXB
--        ( YHBH ,
--          QS ,
--          ZS ,
--          CSDL ,
--          SJRQ
--        )
--VALUES  ( 0 , -- YHBH - int
--          0.0 , -- QS - float
--          0.0 , -- ZS - float
--          0.0 , -- CSDL - float
--          '2015-07-30 06:53:09'  -- SJRQ - datetime
--        )
SELECT * FROM dbo.DLXXB WHERE SJRQ BETWEEN '2014-01-01' AND '2014-02-01';

<span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace PARTITION_Test
{
    class Program
    {
        /// <summary>
        /// 获取随机数
        /// </summary>
        /// <returns></returns>
        public static int FunctionGetRand()
        {
            int Int_Rand;
            Random ro = new Random(10);
            long tick = DateTime.Now.Ticks;
            Random ran = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));
            Int_Rand = ran.Next(50, 65536);
            return Int_Rand;
        }
        static void Main(string[] args)
        {
            //首先添加用户信息表 写入一百户数据
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = "server=.;database=Partition_Test;user id=sa;password=afanti";
            try
            {
                conn.Open();
//                SqlCommand cmd_InsertYHXX = new SqlCommand();
//                cmd_InsertYHXX.Connection = conn;
//                for (int i = 0; i < 100; i++)
//                {
//                    cmd_InsertYHXX.CommandText = "INSERT INTO dbo.YHXXB\r\n" +
//       "( YHXM, KHRQ )\r\n" +
//"VALUES  ( '"+"测试用户00"+ (i+1).ToString()+"', -- YHXM - char(10)\r\n" +
//        " '"+ DateTime.Now.ToString()+"'  -- KHRQ - datetime\r\n" +
//         ")";
//                    cmd_InsertYHXX.ExecuteNonQuery();
//                }
//                Console.WriteLine("用户信息添加成功!");
                //添加电量信息 我就从2013年的1月1日起开始添加
                //首先查询出所有的用户信息
                SqlCommand cmd_YHXXQuery = new SqlCommand();
                cmd_YHXXQuery.Connection = conn;
                cmd_YHXXQuery.CommandText = "SELECT * FROM dbo.YHXXB;";
                SqlCommand cmd_InsertDLXX = new SqlCommand();
                cmd_InsertDLXX.Connection = conn;
                
                SqlDataAdapter sda_Query = new SqlDataAdapter(cmd_YHXXQuery);
                DataSet ds = new DataSet();
                sda_Query.Fill(ds,"YHXXB");
                string Str_YHBH = string.Empty; //用户编号
                DateTime dt_Start = Convert.ToDateTime("2013-01-01");
                for (int i = 0; i < ds.Tables["YHXXB"].Rows.Count; i++)
                {
                    Str_YHBH = ds.Tables["YHXXB"].Rows[i][0].ToString().Trim();//用户编号
                    dt_Start = Convert.ToDateTime("2013-01-01");
                    for (int j = 1; j <= 26280; j++)
                    {
                        cmd_InsertDLXX.CommandText = "INSERT INTO dbo.DLXXB\r\n"+
       " ( YHBH ,\r\n" +
         " QS ,\r\n" +
          "ZS ,\r\n" +
          "CSDL ,\r\n" +
         " SJRQ\r\n" +
       " )\r\n" +
"VALUES  ( "+ Str_YHBH+" , -- YHBH - int\r\n" +
                    " " + FunctionGetRand() + " , -- QS - float\r\n" +
          "" + FunctionGetRand() + " , -- ZS - float\r\n" +
          "" + FunctionGetRand() + ", -- CSDL - float\r\n" +
          "'"+ dt_Start.ToString()+"'  -- SJRQ - datetime\r\n" +
        ")";
                        cmd_InsertDLXX.ExecuteNonQuery();
                        dt_Start = dt_Start.AddHours(1);
                    }
                    Console.WriteLine(Str_YHBH+"电量信息添加成功!");
                }
                Console.WriteLine("所有信息添加成功!");
                Console.ReadLine();
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                conn.Close();
            }
        }
    }
}</span>

我的机器配置还是很高的,大概跑了两个小时。



回来再接着讲分区表的使用。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值