SQL2005 索引设计

2023-12-11 07:58
文章标签 设计 索引 sql2005

本文主要是介绍SQL2005 索引设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 1、评估索引本身的占用空间,当索引相对于其数据本身过大可能会无明显作用。这种情况体现在:表很小,索引列过多,索引碎片过多。当索引在select中不起作用时,你还必须在insert和update、delete这些操作中去维护这些不起作用的数据。
2、In语句不一定不能使用索引,where id in(1,2)和where id =1 or id=2是等效的,这里的in和not in的性能是相同的。而不能使用索引的原因是嵌套查询: where id in(select 1 union select 2).
3、解除嵌套查询无法利用索引的办法是用exists子查询,select * from tb1 a where exists(select 1 from tb2 where id=a.id)。而exists和not exists的性能和tb1的数据量无关,他们的性能差别在于tb2中的数据量。
4、Like子句可以利用索引,所以尽可能少用left,right和substring函数。
5、函数不能使用索引,比如convert(varchar(7),date,120)='2008-06',或者datediff函数、甚至和常量的加减乘除运算等,正确的做法是用比较符号或者尽可能把datediff之类的函数放到等号右边。
6、不用担心隐式转换,它总是转换等号右边的。比如 where id='2' 和where id=2是等效的。
7、聚集索引的查询性能好于非聚集索引,但是维护代价很大,对于他的数据改变会引起整行数据的物理位置移动。同时聚集索引还要为非聚集索引提供索引服务,所以尽量不用过大的列或过多的列作聚集索引。
8、聚集索引可以极大优化大于,小于,group by和order by以及join语句的查询性能。
9、一张表只能由一个聚集索引。
10、唯一索引有助于查询优化。
11、联合索引的第一列可以单独使用,其他的索引列在单独的where子句中不起作用。
12、索引的升序降序对order by子句的影响很大。
13、符合特定条件的计算列也可以创建索引。

这篇关于SQL2005 索引设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/479987

相关文章

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(