SqlServer中创建非聚集索引和非聚集索引

聚集索引与非聚集索引,其实已经有很多的文章做过详细介绍。

非聚集索引

简单来说,聚集索引是适合字段变动不大(尽可能不出现Update的字段)、出现字段重复率小的列,因为聚集索引是对数据物理位置相同的索引,所以一张表中只能出现一个聚集索引。

聚集索引的特征:代表全部数据存储的位置索引,不能经常去更新这个字段,最好不出现重复。

聚集索引

非聚集索引也有很多人叫法上细分为唯一索引、全文索引、普通索引,我们在进项条件查询时,作为条件过滤的字段通常被设置为非聚集索引,这样就不需要去读取原始记录,直接查询索引将大大的节省时间。

非聚集索引的特征:不影响数据存储的物理顺序,对字段的修改、删除、新增来说影响不大,这样我们就可以把常错做的字段并且有需要快速查询的字段定位非聚集索引

不正确建聚集索引的影响:可能会导致每次插入数据都要重新编排索引位置,导致数据的写入极慢。

创建聚集索引

Use log
CREATE CLUSTERED  INDEX 索引名 on 表名(字段名)--创建聚集索引

创建非聚集索引

Use log--使用的库
CREATE NONCLUSTERED INDEX 索引名称 --创建非聚集索引名称
ON 表名(字段名) --为IM_LogSearch表的Keywords字段创建索引
WITH FILLFACTOR = 30 --填充因子为30%
GO

最后这个填充因子主要是在一些字段中我们可以根据读写比例来灵活调整,以便更大的发挥出索引的特性。

填充因子可以参考:

低更改的表(读写比率为100:1):100%的填充因子
高更改的表(写超过读):50-70%的填充因子
读写各一半的:80-90%的填充因子

原文地址:https://www.cnblogs.com/loyung/p/9178236.html

时间: 2024-10-31 19:30:17

SqlServer中创建非聚集索引和非聚集索引的相关文章

Sql语句在SqlServer中创建数据库、表格并添加约束

通过Sql语句来创建数据库与架构 创建数据库 数据库的创建首先是要引用主数据库的,需要在master数据库的环境下进行创建.大致的语法如下: 1 -- 使用master数据库 2 use master 3 -- 创建数据库 4 create datebase [架构名.]数据库名 5 on [primary]--主文件数据描述 6 ( 7 name = '数据库逻辑名', --一般是数据库的名称 8 filename = '数据文件的名字',--全路径 9 size = 12mb, --数据文件

SqlServer中创建Oracle连接服务器

转自太祖元年的:http://www.cnblogs.com/jirglt/archive/2012/06/10/2544025.html参考:http://down.51cto.com/data/910072SqlServer中创建Oracle连接服务器 第一种:界面操作 (1)展开服务器对象-->链接服务器-->右击“新建链接服务器”(2)输入链接服务器的IP (3)链接成功后 第二种:语句操作 注:需要提前安装Oracle客户端程序,重启机器.(如果没有Oracle客户端程序,提示“未找

sqlserver中创建链接服务器

链接服务器在跨数据库/跨服务器查询时非常有用(比如分布式数据库系统中),本文将以图文方式详细说明如何利用SQL Server Management Studio在图形界面下创建链接服务器. 1.展开服务器对象-->链接服务器-->右击"新建链接服务器"注意:必须以数据库管理员身份登录(通常也就是sa帐号)后,才可以创建"链接服务器" 2.输入链接服务器的IP 3.设置链接服务器的安全性 完成后,如下图:现在测试一下,用帐号user本地登录SqlServe

ORACLE数据库中创建、删除--同义词、视图、索引、序列

select * from emp; create synonym emp_ny for emp; create public synonym pub_emp_ny for employees;--创建公有同义词 DROP SYNONYM EMP_NY;--删除同义词 DROP PUBLIC SYNONYM PUB_EMP_NY;--删除公有同义词 查看已有同义词 SELECT * FROM SYS.ALL_SYNONYMS WHERE table_name='DIC_TRIPMODE'; CR

在sqlserver中创建表

1:在sql语句中,临时表有两类,分别是局部(local)和全局(global)临时表,局部临时表只在其会话(事务)中可见,全局临时表可以被会话(事务)中的任何程序或者 模块访问 2:创建局部临时表 [sql] view plaincopyprint? use db_sqlserver go create table #db_local_table ( id  int, name varchar(50), age int, area int ) use db_sqlserver go creat

sqlserver中创建包含事务的存储过程

什么是事务 事务时包含1条或多条语句的逻辑单元.事务中的语句是一个整体,要么一起提交,要么一起撤销.事务在提交前可以回滚,一旦提交就不能撤销修改了,是永久性的修改. 为什么使用事务 可以例举生活中的例子,比如银行转账:A向B转100万.程序的执行顺序:1.A账户减掉100万 2.B账户增加100万.若是都成功执行倒没什么,假设1成功执行,2执行失败,就会出问题.运用事务就不会出现这种问题,因为只要其中有一步操作失败,事务就会回滚,之前的所有操作将会被撤销. 事务的基本控制语句 1.BEGIN T

解决“动软代码生成器在SqlServer中会将唯一索引识别为主键"的Bug

动软代码生成器在SqlServer中,生成的代码会将唯一索引错误地识别为主键, 反编译源代码后,发现其中的SQL条件有误,现修复此Bug. 修复方法:将附件中的”Maticsoft.DbObjects.dll“替换安装目录下的相关文件即可.(替换前请做好备份,该修复基于最新版本V2.78) 若安装在默认目录下,也可直接执行附件中的批处理命令. 修复文件:动软代码生成器_主键Bug修复.rar

c#在sqlserver中使用EF框架

vs2017,sqlserver2017(localdb)调试通过.在sqlserver中创建数据库d1,表t1如下: 录入数据如下: 在vs新建任意项目,此处以控制台为例.添加数据模型Model1: 为了尽量少写代码,选择下图内容(该模式似乎没有迁移问题,挺好的): 说明:连接字符串可以在代码中自行设置,所以下面选了“否”并且没有勾选复选框. 选择需要使用的表:完成 项目里自动添加Model1.cs和t1.cs.一个是数据库对象(含表),一个是表里的记录对象. 把Model1.cs当中的‘ba

SqlServer 创建聚集索引与非聚集索引处理千万条数据的优化,以及之间的区别

在以下的文章中,我将以"办公自动化"系统为例,探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的"红头文件"一表的部分数据结构: CREATE TABLE [dbo].[TGongwen] ( --TGongwen是红头文件表名 [Gid] [int] IDENTITY (1, 1) NOT NULL , --本表的id号,也是主键 [title] [varchar] (80) COLLA