提高数据库效率的利器——分区
来源:互联网 发布:java Object not found 编辑:程序博客网 时间:2024/06/07 08:58
原文:点击打开链接
--0. 预备==>删除可能存在的库 [ Test_1 ]USE [master]GOIF EXISTS ( SELECT * FROM sys.databases WHERE NAME = 'Test_1' ) DROP DATABASE Test_1GO--1. 创建库 [Test_1], 注:多了两个文件组:Test_A.ndf, Test_B.ndf , 文件组也要指定位置--创建新库,要演练分区所以我们会多创建两个文件组Test_A,Test_B,以便在后面的分区方案中使用。CREATE DATABASE [Test_1] ON PRIMARY( NAME = N'test_1', FILENAME = N'D:\sqldata\test_1.mdf', SIZE = 10240KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), FILEGROUP [test_A] ( NAME = N'Test_A', FILENAME = N'D:\sqldata\test_A.ndf', SIZE = 1024KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB),FILEGROUP [test_B] ( NAME = N'Test_B', FILENAME = N'D:\sqldata\test_B.ndf', SIZE = 1024KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB) LOG ON ( NAME = N'Test_log', FILENAME = N'D:\sqldata\Test_log.ldf', SIZE = 7616KB, MAXSIZE = 2048GB, FILEGROWTH = 10%) COLLATE Chinese_PRC_CI_ASGO--2. 使用新库 [Test_1] , 并删除可能存在的分区函数 [test_partition]USE [Test_1]GO--若分区函数存在则先drop掉IF EXISTS ( SELECT * FROM sys.partition_functions WHERE NAME = N'test_partition' ) DROP PARTITION FUNCTION [test_partition]GO--3. 创建分区函数 [test_partition] , 确定分区的字段类型和分区范围/*创建分区函数给后面的分区方案使用,分区函数很简单就是指定一个范围确定在某个值为什么的时候放在那个分区上*/--新建一个简单的分区函数,该函数以1000为界分两个区CREATE PARTITION FUNCTION test_partition(INT)ASRANGE LEFT FOR VALUES (1000) GO--4. 删除可能存在的分区方案 [test_scheme]/*看分区方案是否存在,若存在先drop掉*/IF EXISTS ( SELECT * FROM sys.partition_schemes WHERE NAME = N'test_scheme' ) DROP PARTITION SCHEME test_schemeGO--5. 创建分区方案 [test_scheme], 为分区方案指定分区函数, 并指定分区函数中分的组要放在当个文件组上--创建分区方案,分区方案需要指定一个分区函数,并指定在分区函数中分的区需要放在哪一个文件组上CREATE PARTITION SCHEME test_scheme AS PARTITION [test_partition] TO (test_A, test_B)GO--6. 创建测试表 [student] , 注 ON 指定了分区方案, 而且指定了分区函数的字段--创建分区表IF OBJECT_ID('student', 'U') IS NOT NULL DROP TABLE student;GOCREATE TABLE student(id INT IDENTITY(1, 1) NOT NULL,NAME VARCHAR(10) NOT NULL,class INT NOT NULL,grade INT) ON test_scheme(class) --在此处指定该表要使用的分区方案,并将指定分区依据列GO--7. 插入测试数据--随便插入几条数据INSERT INTO studentVALUES ( 'AQU', 10, 100 ); -- 这条数据在A分区上INSERT INTO studentVALUES ( 'AQU_边界', 1000, 89 ); -- 这边数据也在A分区上是个边界,因为我们上面在函数中指定的是RANGE LEFT,所以1000在A分区上INSERT INTO studentVALUES ( 'BQU', 1001, 90 ); -- 这一条肯定是在B分区上了。GO--8. 查看 select 数据集的结果, 注意 得到分区序号的方法: $partition.分区函数(分区列)--最后看看结果。$partition.分区函数(分区列)可以返回某一行所在的分区序号SELECT *, 分区序号 = $partition.test_partition(class)FROM studentGO
- 提高数据库效率的利器——分区
- QuickUnity —— 提高Unity开发者开发效率的利器
- 提高管理效率的几柄“利器”
- AndroidAnnotations--提高开发效率的利器
- 提高数据库的效率
- 提高数据库效率的方法
- 提高数据库效率的方法
- 用上就不会停下的效率利器—Automator
- 【数据库】索引——快速提高查询效率
- 浅谈数据库访问效率的提高
- 浅谈数据库访问效率的提高
- 提高数据库运行效率的办法
- 提高Mysql数据库的查询效率
- 提高数据库查询效率的实用方法
- 提高数据库查询效率的实用方法
- 提高数据库查询的效率2
- 提高数据库查询效率的方法
- 提高数据库查询效率的有效方法
- 编译Android4.0.4源代码
- 多重背包-未优化-HDU-2191
- NYOJ 52 无聊的小明
- AVL树(考研的同学需要注意其定义)的判定(某公司2012年校园招聘笔试题目)
- MySql的CRUD(增、删、改、查)操作
- 提高数据库效率的利器——分区
- uva10069 - Distinct Subsequences(动规,大数)
- HDU 4407 SUM 【数论,容斥原理】
- HashCode方法
- 包含max(min)的栈及队列
- Integer的自动拆装箱的陷阱(整型数-128到127的值比较问题)
- 第十四周--项目1-Animal
- 寄存器的分配
- 在android中对关系型数据库的操作