您的位置:首页 > 数据库

C#+Sqlserver2008下分区表的使用

2015-07-30 16:51 351 查看
随着数据的越来越多,系统也渐渐地慢起来了,我从网上简单看了一下,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>


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



回来再接着讲分区表的使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: