菜的像徐坤
排名
7
文章
192
粉丝
15
评论
16
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

sql 索引

5007人阅读 2021/5/25 15:51 总访问:961093 评论:0 收藏:0 手机
分类: SQL

前言

SQL索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息

创建索引的语法

create index 索引名 on 表(字段)

索引分为聚集索引和非聚集索引

  1. 聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个

  2. 聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续

  3. 聚集索引:物理存储按照索引排序引的键值逻辑顺序决定了表数据行的物理存储顺序

  4. 非聚集索引:物理存储不按照索引排序非聚集索引就是普通索引了,仅仅只是对数据列创建相应的索引,不影响整个表的物理存储顺序


唯一索引:

 唯一索引不止用于提升查询性能,还用于保证数据完整性。唯一索引不允许向表中插入任何重复值。其基本语法如下所示:

  1. CREATE UNIQUE INDEX index_name on table_name (column_name);


聚簇索引:

 聚簇索引在表中两个或更多的列的基础上建立。其基本语法如下所示:

CREATE INDEX index_name on table_name (column1, column2);

隐式索引:

 隐式索引由数据库服务器在创建某些对象的时候自动生成。例如,对于主键约束和唯一约束,数据库服务器就会自动创建索引。


DROP INDEX 命令:

 索引可以用 SQL DROP 命令删除。删除索引时应当特别小心,数据库的性能可能会因此而降低或者提高。

 其基本语法如下:

DROP INDEX table_name.index_name;

什么时候应当避免使用索引?


 尽管创建索引的目的是提升数据库的性能,但是还是有一些情况应当避免使用索引。下面几条指导原则给出了何时应当重新考虑是否使用索引:

  • 小的数据表不应当使用索引;

  • 需要频繁进行大批量的更新或者插入操作的表;

  • 如果列中包含大数或者 NULL 值,不宜创建索引;

  • 频繁操作的列不宜创建索引。


    索引

  • SQL 索引_w3cschool

索引

  1. --数据表里有二十万条数据
  2. create table rmb 
  3. (
  4. id int primary key identity(1,1),
  5. sid varchar(899) ,
  6. money int check (money >=0
  7. )
  8. declare @num int = 0
  9. while(@num<200000)
  10. begin
  11. select @num = @num +1
  12. insert rmb values('ns00835更合适热潮都是打过去额外恶2354'+CAST(@num as varchar(10)) ,1000)
  13. end

查询没有索引的字段


给sid字段创建suoyin

  1. create index sid_index on rmb(sid)


相比两个字段,创建索引的字段比没创建索引的字段查询效率更快,而且开销更小

评价

如何修改重置MD5加密后的sql用户密码

二次开发时,要加一个忘记密码的功能,后台写了修改密码的方法,数据库执行也修改成功,但是登录一直提示密码错误。之所以...

sql Server的几种分页方式和效率

--topnotin方式 selecttop条数*fromtablename whereIdnotin(selecttop条数*页数Idfromtablename) --ROW_NUMBER()O...

Mysql主从复制+读写分离

使用Mysql读写分离和主从复制的原因:*单台MySQL服务器的安全性,高可用性,高并发都是不满足实际的生产需要。介绍:1.MySQ...

sql Server 中使用游标

--声明一个游标 DECLAREMyCursorCURSOR FORSELECTTOP5FBookName,FBookCodingFROMTBookInfo//定义一个叫MyCursor的游标,...

Mysql控制台插入中文数据报错1366解决

计算机配置: windows系统.数据库:MySQL5.5.如图 : 下图为表结构信息:通过 show full columns from userinfo;查询所得 na...

sqlserver order by

order by 字段名order by 第几个字段(整形)order by 排序:order by 字段名:通过字段名指定的字段排序 order by 字段数...

sqlserver保障远程连接的安全性

如果是只读的话建个视图,建个普通用户只对该视图进行读。读写的话就只能自己在加一层代理服务,由代理来进行读写,各客户...

sqlerver添加用户与授权

添加用户安全性--&gt;登录名,然后右键新建登录名就可以了然后填写好相关信息就可以了右键属性,用户映射可以选择该用户可...

Mysql 游标创建

游标:可以来存储一个结果集,可以通过遍历来访问到每一个数据需求:分表数据。 把一张表的数据根据需求分离,创建不同的表...

没有为 sql 缓存通知启用数据库

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql -S 数据库IP -U 登录名 -P 密码 -d 数据库名称 -t 表名 -et

sqlserver约束

添加表后操作约束--删除约束 altertableaj_testdropconstraintCK__aj_test__userAge__5EBF139D --为表aj_test添加默认...

c sql简单参数化写法

防止sql 注入的,简单参数化写法publicboolLogin(string_username,string_password) { using(SqlConnectionconn=newSqlCo...

mysql 存储过程报错:delimiter

最近刚学sql,学到了存储过程,每当练习的时候就一直出现问题。 现在记录CREATEPROCEDUREproc_out(OUTstuidINT) begin se...

Mysql 视图的(增删改 查)

要显示视图的定义,需要在SHOWCREATEVIEW子句之后指定视图的名称, 我们先来创建几张表,完事后在进行演示:--用户信息表...

sqlServer存储过程拼接sql语句,分页

在写有些存储过程的时候需要进行sql的拼接,然后在使用exec函数执行sql语句注意字符串的拼接,看下面一段存储过程的sql语句...