SQL索引创建原则、创建与删除示例

SQL索引创建原则、创建与删除示例一 索引创建原则 表的主键 外键必须有索引 数据量超过 300 的表应该有索引 经常与其他表进行连接的表 在连接字段上应该建立索引 经常出现在 Where 子句中的字段 特别是大表的字段 应该建立索引 索引应该建在选择性高的字段上 索引应该建在小字段上 对于大的文本字段甚至超长字段 例如数据类型为 text 或 ntext 的字段 不要建索引 频繁进行数据操作的表 不要建立太多的索引 删除无用的索

对一个数据库较大的表创建合适的索引,由此索引的唯一性,可以在很大程度上加快数据检索速度、加快表与表之间的连接、减少查询中分组与排序的事件,从而提高系统性能。但是索引并不是多多益善,因此创建和维护需要耗费时间,而索引也需要占用很大的物理空间,是以空间来换取速度的一种机制,另外更新表时索引也要相应修改。合理的索引能帮助你很大的提高查询效率,但不当的索引也有可能会拖慢查询,尤其是建立复合索引时更要谨慎。

一、索引创建原则:

  1. 表的主键、外键必须有索引;
  2. 数据量超过300的表应该有索引;
  3. 经常与其他表进行连接的表,在连接字段上应该建立索引;
  4. 经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
  5. 索引应该建在选择性高的字段上;
  6. 索引应该建在小字段上,对于大的文本字段甚至超长字段(例如数据类型为text或ntext的字段),不要建索引;
  7. 频繁进行数据操作的表,不要建立太多的索引;
  8. 删除无用的索引,避免对执行计划造成负面影响;

二、复合索引注意事项:

  1. 复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替;
  2. 正确选择复合索引中的主列字段,一般是选择性较好的字段;
  3. 复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;
  4. 如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;
  5. 如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;
  6. 如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;

三、索引创建

在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引。

ALTER TABLE table_name ADD INDEX index_name (column_list) ALTER TABLE table_name ADD UNIQUE (column_list) ALTER TABLE table_name ADD PRIMARY KEY (column_list)

其中table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以同时创建多个索引。

CREATE INDEX index_name ON table_name (column_list) CREATE UNIQUE INDEX index_name ON table_name (column_list)

table_name、index_name和column_list具有与ALTER TABLE语句中相同的含义,索引名不可选。另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。

ALTER TABLE StudentADD PRIMARY KEY (SID)

四、索引删除

可利用ALTER TABLE或DROP INDEX语句来删除索引。类似于CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,语法如下。

DROP INDEX index_name ON talbe_name ALTER TABLE table_name DROP INDEX index_name ALTER TABLE table_name DROP PRIMARY KEY
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178815.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午4:28
下一篇 2026年3月26日 下午4:28


相关推荐

  • PyCharm删除项目的方法

    PyCharm删除项目的方法采用 PyCharm 作为 IDE 时会发现 与其他语言的 IDE 相比项目删除起来比较困难 即使把源文件删除了 但是项目名称依旧保留 这里我们说明 PyCharm 中正确的项目删除方式

    2026年3月27日
    2
  • 点积应用-求两个向量夹角

    点积应用-求两个向量夹角之前 由点积求两条直线的夹角 只知道会用 不知道原量 今天看计算机图形学 才知道其原量 待记录如下 nbsp nbsp 点积最重要的应用时计算两个向量的夹角 或者两条直线的夹角 图给出了二维的情况 其中向量 b 和向量 c 与 x 轴的夹角分别为 B C 从基本三角函数可得 nbsp nbsp b b

    2026年3月26日
    2
  • 笃志前行——一个四非一本院校计算机学子保研之路

    笃志前行——一个四非一本院校计算机学子保研之路之前看了许许多多保研经验帖 如今我也写下这篇文章 希望帮助到各位学弟学妹们 曾经的我是想出国的 但是有位学长 真的很感激他 帮了我很大忙 和我说复旦希望很大 因此在大三上就决定走保研这条路了 不过呢 我还是建议大家可以去美国还是去美国吧 我是因为从小就特别憧憬复旦 所以选择放弃出国了 这篇文章主要分为两个部分 一个是夏令营情况 一个是九推的情况 夏令营一般 5 月就要关注并报名和投材料了

    2026年3月19日
    1
  • python打包的exe闪退(打包安装程序闪退)

    Python打包exe近期自己做了一个小demo要分享给朋友,但是朋友又没有python环境,所以打包成exe。下面就记录一下自己打包exe方法工具Python3.6.2Pyinstaller3.3.1安装Pyinstaller直接pip安装,没什么好说的pipinstallPyinstaller命令详解在这里我讲述我的打包方法,详细方法可见百度经验。…

    2022年4月10日
    456
  • a4如何打印双面小册子_用word如何打印小册子(一张A4打两张那种的)

    a4如何打印双面小册子_用word如何打印小册子(一张A4打两张那种的)用 word 打印小册子具体操作步骤 1 首先打开将要打印的文档 然后在菜单栏下面的快捷菜单栏 找到打印机的快捷图标 单击鼠标左键选择打开打印机 2 会弹出打印机设置对话框 可以进行打印前的一些细节的设置 由于是要选择打印一本小册子所以选择打印 所有页面 3 在下面一栏是调整页面大小 也就是打印模式 选择 小册子 进行打印 4 然后下面是关于小册子的一些设置 按照自己的需要进行设置 5 设置完成以后

    2026年3月19日
    2
  • vs中文乱码怎么解决_visual studio code中文乱码

    vs中文乱码怎么解决_visual studio code中文乱码在Windows下使用VSCode编译运行,都出现中文乱码的问题,今天我就遇见了这种情况,上网搜了半天也没有找到正确的解决方法,现将我把我的方法晒一下.中文的windows下的cmd默认使用GBK的编码,每次需要的时候只要在VSCode终端输入命令:chcp65001,切换代码页到使用UTF-8就可以解决中文代码的问题,只不过这种方法太麻烦了,每次进入终端都要输入命令,那有没有永久性解决…

    2022年8月30日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号