首页 > 数据库 >SQL sever 索引实验

SQL sever 索引实验

时间:2024-10-27 16:18:34浏览次数:5  
标签:char INT CHAR 索引 tbl KEY SQL TABLE sever

1. 用sql语言创建数据库DB_test,代码参考https://blog.csdn.net/m0_75112455/article/details/143257034?spm=1001.2014.3001.5502

创建成功

2. 进行数据的导入

(1)下载TPC-H文件

(2)将tbl文件导入到数据库

use DB_test;
GO

drop table PART;
CREATE TABLE PART
(P_PARTKEY int primary key,
P_NAME varchar(55),
P_MFGR char(25),

P_BRAND char(10),
P_TYPE varchar(25),
P_SIZE int,
P_CONTAINER char(10),
P_RETAILPRICE decimal,
P_COMMENT varchar(23))
TRUNCATE TABLE PART;

BULK INSERT PART
FROM"D:\part.tbl"
WITH
(TABLOCK, DATAFILETYPE='char', CODEPAGE='raw', FIELDTERMINATOR = '|',ROWTERMINATOR='|\n')

drop table REGION;
CREATE TABLE REGION
(R_REGIONKEY INT PRIMARY KEY,
R_NAME CHAR(25),
R_COMMENT VARCHAR(152))
TRUNCATE TABLE REGION;

BULK INSERT REGION
FROM"D:\tpc-h-tool-3.0.0\TPC-H_Tools_v3.0.0\dbgen\region.tbl"
WITH
(TABLOCK, DATAFILETYPE='char', CODEPAGE='raw', FIELDTERMINATOR = '|',ROWTERMINATOR='|\n')

drop table NATION
CREATE TABLE NATION
(N_NATIONKEY INT PRIMARY KEY,
N_NAME CHAR(25),
N_REGIONKEY INT FOREIGN KEY REFERENCES REGION(R_REGIONKEY),
N_COMMENT VARCHAR(152))
TRUNCATE TABLE NATION;

BULK INSERT NATION
FROM"D: \tpc-h-tool-3.0.0\TPC-H_Tools_v3.0.0\dbgen\nation.tbl"
WITH
(TABLOCK, DATAFILETYPE='char', CODEPAGE='raw', FIELDTERMINATOR = '|',ROWTERMINATOR='|\n')

/*drop table SUPPLIER*/
CREATE TABLE SUPPLIER
(S_SUPPKEY int PRIMARY KEY,
S_NAME char(25),
S_ADDRESS varchar(40),
S_NATIONKEY INT FOREIGN KEY REFERENCES NATION(N_NATIONKEY),
S_PHONE CHAR(15),
S_ACCTBAL DECIMAL,
S_COMMENT VARCHAR(101))
TRUNCATE TABLE SUPPLIER;

BULK INSERT SUPPLIER
FROM"D:\ tpc-h-tool-3.0.0\TPC-H_Tools_v3.0.0\dbgen\supplier.tbl"
WITH
(TABLOCK, DATAFILETYPE='char', CODEPAGE='raw', FIELDTERMINATOR = '|',ROWTERMINATOR='|\n')

/*drop table PARTSUPP*/
CREATE TABLE PARTSUPP
(PS_PARTKEY INT FOREIGN KEY REFERENCES PART(P_PARTKEY),
PS_SUPPKEY INT FOREIGN KEY REFERENCES SUPPLIER(S_SUPPKEY),
PS_AVAILQTY INT,
PS_SUPPLYCOST DECIMAL,
PS_COMMENT VARCHAR(199),
PRIMARY KEY(PS_PARTKEY,PS_SUPPKEY))
TRUNCATE TABLE PARTSUPP;

BULK INSERT PARTSUPP
FROM"D: \tpc-h-tool-3.0.0\TPC-H_Tools_v3.0.0\dbgen\partsupp.tbl"
WITH
(TABLOCK, DATAFILETYPE='char', CODEPAGE='raw', FIELDTERMINATOR = '|',ROWTERMINATOR='|\n')

/*drop table CUSTOMER*/
CREATE TABLE CUSTOMER
(C_CUSTKEY INT PRIMARY KEY,
C_NAME VARCHAR(25),
C_ADDRESS VARCHAR(40),
C_NATIONKEY INT FOREIGN KEY REFERENCES NATION(N_NATIONKEY),
C_PHONE CHAR(15),
C_ACCTBAL DECIMAL,
C_MKTSEGMENT CHAR(10),
C_COMMENT VARCHAR(117))
TRUNCATE TABLE CUSTOMER;

BULK INSERT CUSTOMER
FROM"D: \tpc-h-tool-3.0.0\TPC-H_Tools_v3.0.0\dbgen\customer.tbl"
WITH
(TABLOCK, DATAFILETYPE='char', CODEPAGE='raw', FIELDTERMINATOR = '|',ROWTERMINATOR='|\n')

/*drop table ORDERS*/
CREATE TABLE ORDERS
(O_ORDERKEY INT PRIMARY KEY,
O_CUSTKEY INT,
O_ORDERSTATUS CHAR(1),
O_TOTALPRICE DECIMAL,
O_ORDERDATE DATE,
O_ORDERPRIORITY CHAR(15),
O_CLERK CHAR(15),
O_SHIPPRIORITY INT,
O_COMMENT VARCHAR(79),
FOREIGN KEY(O_CUSTKEY) REFERENCES CUSTOMER(C_CUSTKEY))
TRUNCATE TABLE ORDERS;

BULK INSERT ORDERS
FROM"D: \tpc-h-tool-3.0.0\TPC-H_Tools_v3.0.0\dbgen\orders.tbl"
WITH
(TABLOCK, DATAFILETYPE='char', CODEPAGE='raw', FIELDTERMINATOR = '|',ROWTERMINATOR='|\n')

/*drop table LINEITEM*/
CREATE TABLE LINEITEM
(L_ORDERKEY INT FOREIGN KEY REFERENCES ORDERS(O_ORDERKEY),
L_PARTKEY INT FOREIGN KEY REFERENCES PART(P_PARTKEY),
L_SUPPKEY INT FOREIGN KEY REFERENCES SUPPLIER(S_SUPPKEY),
L_LINENUMBER INT,
L_QUANTITY DECIMAL,
L_EXTENDEDPRICE DECIMAL,
L_DISCOUNT DECIMAL,
L_TAX DECIMAL,
L_RETURNFLAG CHAR(1),
L_LINESTATUS CHAR(1),
L_SHIPDATE DATE,
L_COMMITDATE DATE,
L_SHIPINSTRUCT CHAR(25),
L_SHIPMODE CHAR(50),
L_COMMENT VARCHAR(60),
PRIMARY KEY(L_ORDERKEY,L_LINENUMBER))
TRUNCATE TABLE LINEITEM;

BULK INSERT LINEITEM
FROM"D: \tpc-h-tool-3.0.0\TPC-H_Tools_v3.0.0\dbgen\lineitem.tbl"
WITH
(TABLOCK, DATAFILETYPE='char', CODEPAGE='raw', FIELDTERMINATOR = '|',ROWTERMINATOR='|\n')

导入成功:

3. 测试索引的性能

(1)清楚缓冲区

(2)未使用索引时

(i)统计IO的耗费时间

(ii)查看长期计划:点击“查询”->“显示估计的执行计划”,可见最后走的是全标扫描

(3)使用索引后:

(i)创建索引

(ii)统计IO的耗费时间,相比未建立索引前,逻辑读取次数、预读读取次数都少了很多

(iii)查看长期计划,可见数据库走的是索引进行查询

标签:char,INT,CHAR,索引,tbl,KEY,SQL,TABLE,sever
From: https://blog.csdn.net/m0_75112455/article/details/143257132

相关文章

  • MySQL入门到实战详细教程
    MySQL介绍MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,属于Oracle旗下产品,它广泛应用于各种Web应用程序和网站,MySQL使用结构化查询语言(SQL)进行数据的管理和操作。MySQL主要特点开源免费:MySQL是一个开源项目,可以自由下载和使用。跨平台支持:MySQL可以在多......
  • windows安装MySQL8.4.3LTS
    windows安装MySQL8.4.3LTS第一步:下载压缩文件https://dev.mysql.com/downloads/mysql/第二步:解压压缩包以及编写配置my.ini配置[mysqld]#skip_grant_tables#设置3306端口port=3306#设置mysql的安装目录basedir=D:\\Software\\mysql-8.4.3-winx64#设置mysql数据库......
  • Mysql索引-面试题
    索引用于快速查询和检索数据,本质可以看成是一种排序好的数据结构索引底层:B+树索引的作用:唯一索引-->保证数据表中的每一行数据的唯一性。减少检索数据量,减少IO次数。索引底层数据结构Hash表哈希表是键值对的集合,通过Key查询对应Value,哈希表可以快速检索数据O(1)如......
  • SQL中INNER JOIN和LEFT JOIN有什么区别
    SQL中INNERJOIN和LEFTJOIN两种连接类型的主要区别点包括:1.结果集中包含的行;2.对不匹配行的处理;3.应用场景;4.性能考量;5.使用建议。这些差异在数据库查询优化和数据关联时发挥关键作用,理解这些差异对于进行有效的数据分析至关重要。1.结果集中包含的行INNERJOIN:仅返回两......
  • mysql最基本使用命令(外键,联合查询,事件)
    1.创建一个表createtableclass(idintnotnullprimarykey,namechar(16));#插入数据insertintoclass(id,name)values(1,"张三");insertintoclass(id,name)values(2,"lisi");2.创建一个表,带外键createtablestudent(idint(11)notnull,namechar(16)......
  • PostgreSQL逻辑复制常见错误以及处理方式
     在PostgreSQL和SQLServer中,有一个共同的特点,相比如物理复制,逻辑复制可能会存在较多的一些细节和可能错误的发生,作为SQLServerReplication(逻辑复制)的深入用户,有必要深入学习试验一下PostgreSQL的逻辑复制的一些细节。 订阅端的主要订阅选项信息createsubscriptionslave......
  • 什么是 SQL 数据库
    标题:了解SQL数据库及其核心要素摘要:SQL数据库是一种遵循结构化查询语言(SQL)的关系型数据库管理系统(RDBMS),用于数据存储和操纵。关键特征包括数据结构化、操作灵活性、ACID属性、易于管理及广泛支持。数据结构化的特性允许组织和存储数据在预定义的格式中,这样可以更轻松地执行查询......
  • MYSQL数据库表
    MYSQL完整性约束1.实体完整性(1)主码(PRIMARYKEY)约束主码约束是指在表中定义一个主码,它的值用于唯一标识表中的每一行数据。若关系中的一个属性或属性组的值能够唯一地标识一个元组,且他的子集不能唯一的标识一个元组,则称这个属性或属性组做候选码。候选码特性:唯一性:唯......
  • 2024年最新互联网大厂精选 Java 面试真题集锦(JVM、多线程、MQ、MyBatis、MySQL、Redis
    前言春招,秋招,社招,我们Java程序员的面试之路,是挺难的,过了HR,还得被技术面,在去各个厂面试的时候,经常是通宵睡不着觉,头发都脱了一大把,还好最终侥幸能够入职一个独角兽公司,安稳从事喜欢的工作至今...近期也算是抽取出大部分休息的时间,为大家准备了一份通往大厂面试的小捷径,准备......