数据库整理(索引)

2 索引
使用树形结构提高查询速度的操作
叶子节点上:数据大小小,且区分度高
聚集索引:即主键索引:叶子节点存在id,关联着对应数据(主键)where ... 只能在主键的时候明显提高检索速度
只能给一个字段加主键,如果在where中不使用该字段,则索引无效
添加主键的方式即为添加主键索引的方式

辅助索引:在建立树形结构的时候,叶子节点中存的是列数据+id。获取列之后,在根据对应的id去找(使用聚集索引的模式)

这样的话,数据在叶子占用空间少,

唯一索引:unique

    创建:是直接在字段后加unique   或者后续添加   alter table 表名 add unique key 自己指定的索引名字(字段);

    删除: alter table 表名drop index 自己指定的索引名字   或者    drop index 自己指定的索引名字 on 表名;

普通索引:index

       创建时单独一个逗号隔开,index  自己指定的索引名字(字段)  或者后续添加   alter table 表名 add index 自己指定的索引名字(字段);

删除同上

2.1 命中索引

指的是如何合理的提高已经增加的索引的实际利用率

  范围查询:>,>=,like   这种方式效率低,尽可能的要精确范围

  在使用and查找时,一旦某个条件中有索引对应的字段,则先执行有索引的条件,是一种mysql的自动优化机制。自动选择定位范围内快的条件查询,针对的是多条件语句的and结果

  索引的计算:自断不要计算,后面的数据可以计算。where id*10=100,是错的;where id=10*10,是对的。

  =和in语句是可以乱序的,也是一种自动优化

优化神器:explain,在要进行查找的原句前加一个explain即可预执行,可以显示扫描的行数等信息

2.2 联合索引

  给多个字段合并加一个索引,一切的写法都不变:字段的写法是在括号内写多个,彼此用逗号隔开

  最左匹配特性:where要求最左边的字段必须有,数据区分度高的和数据长度小的字段房子括号里的前面,

  没有最左的字段则导致这个联合索引失效

2.3 覆盖索引

  只有一个字段的内容被取出来的索引语句结果

2.4 慢查询日志

  设置时间,查看、记录查询速度慢的语句

原文地址:https://www.cnblogs.com/shachengcc1/p/11444212.html

时间: 2024-10-17 23:52:21

数据库整理(索引)的相关文章

SCOM数据库整理索引计划出错

我们为了提高数据库的访问效率,我们需要对数据库做优化,那么在这里我是希望对我的SCOM的SQL进行索引的整理. 当我们在SQL的维护计划中创建了针对SCOM数据库进行重新组织索引的计划后,发现运行总是会失败,这是为什么呢? 发现报错是这样的: 执行查询"ALTER INDEX [PK__EventSta__95632343A552DFB0] ON [E..."失败,错误如下:"找不到索引 'PK__EventSta__95632343A552DFB0'.".失败的原

通过DBCC整理Sqlserver数据库表索引碎片

昨天检查了一张效率极慢的表,两年多没有维护,逻辑扫描碎片高达99.81%,于是开始对这个表进行重点跟踪和记录日志.今天用DBCC SHOWCONTIG WITH TABLERESULTS 命令检查了一下所有表的概况,然后参照着MSDN对字段的说明,发现问题比较严重.ScanDensity(这是"最佳计数"与"实际计数"的比率.如果所有内容都是连续的,则该值为 100:如果该值小于 100,则存在一些碎片)有的甚至在16.6666666666667,其他扫描密度等指标

SQL Server数据库表索引碎片整理

在SQLServer数据库,通过DBCC ShowContig或DBCC ShowContig(表名)检查索引碎片情况,指导我们对其进行定时重建整理. 运行结果如下: 1 2 3 4 5 6 7 8 9 10 11 DBCC SHOWCONTIG 正在扫描 'tbModule' 表... 表: 'tbModule'(1845581613):索引 ID: 0,数据库 ID: 9 已执行 TABLE 级别的扫描. - 扫描页数.....................................

检测和整理索引碎片

索引碎片的检测和整理 存储数据是为了查找数据,存储结构影响数据查找的性能.对无序数据进行查找,最快的查找算法是哈希查找:对有序数据进行查找,最快的查找算法是平衡树查找.在传统的关系型数据库中,聚集索引和非聚集索引都是平衡树(B-Tree)类型的存储结构,用于顺序存储数据,便于实现数据的快速查找.除了提升数据查找的性能之外,索引还能减少硬盘IO和内存消耗.通常情况下,硬盘IO是查找性能的瓶颈,由于索引是数据表的列的子集,这意味着,索引只存储部分列的数据,占用的硬盘空间比全部列少了很多,因此,数据库

数据库之索引

今天想到数据库的优化,第一项就想到了索引,所以想重新认识一下索引.首先百度百科了一下,定义还是首要看的嘛! 定义:索引是一个单独的.物理的数据结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单. 我去!!!这定义谁下的,读起来拗口不说,还死难理解对吧?还是看看它可以干什么吧! 使用索引可以快速访问数据库表中的特定信息.索引是对数据库表中一列或多列值进行排序的一种结构:例如EMPLOYEE表中的姓名(NAME)列,如果要按姓查找特定职员,与必须搜索表中的所有

Oracle 数据库整理表碎片

Oracle 数据库整理表碎片 转载:http://kyle.xlau.org/posts/table-fragmentation.html 表碎片的来源 当针对一个表的删除操作很多时,表会产生大量碎片.删除操作释放的空间不会被插入操作立即重用,甚至永远也不会被重用. 怎样确定是否有表碎片 -- 收集表统计信息 SQL> exec dbms_stats.gather_table_stats(ownname=>'SCHEMA_NAME',tabname=> 'TABLE_NAME'); -

Lucene整理--索引的建立

看lucene主页(http://lucene.apache.org/)上眼下lucene已经到4.9.0版本号了, 參考学习的书是依照2.1版本号解说的,写的代码样例是用的3.0.2版本号的,版本号 的不同导致有些方法的使用差异,可是大体还是同样的. 源码用到的jar包(3.0.2版本号)下载地址 參考资料: 1.公司内部培训资料 2.<Lucene搜索引擎开发权威经典>于天恩著. Lucene使用挺简单的,耐心看完都能学会,还有源码. 一.创建索引的基本方式 全部开源搜索引擎的基本架构和原

[转]SQL SERVER整理索引碎片测试

SQL SERVER整理索引碎片测试 SQL SERVER整理索引的方法也就这么几种,而且老是自作聪明的加入智能判断很不爽,还是比DBMS_ADVISOR差远了: 1SQL SERVER 2000/2005 查询 2000use DB_Namedeclare @table_id intset @table_id=object_id('Table_Name')dbcc showcontig(@table_id) 2005SELECT index_id,index_type_desc,avg_fra

SQL Server通过整理索引碎片和重建索引提高速度

SQL Server数据库操作中,当数据库中的记录比较多的时候,我们可以通过索引来实现查询.但是当索引碎片太多的时候,就会很严重地影响到查询的速度.这时候我们可以采取两种方法来解决:一种时整理索引碎片,另一种是重建索引.本文主要介绍了这一过程,接下来就让我们来一起了解一下吧. 检查索引碎片DBCC SHOWCONTIG(表),得到如下结果: DBCC SHOWCONTIG 正在扫描 'A' 表... 表: 'A'(884198200):索引 ID: 1,数据库 ID: 13 已执行 TABLE 

以骆驼祥子为例研究2018年数据库与索引技术的变化[图]

我们都知道,骆驼祥子是老舍的一部优秀的长篇小说,在初中阶段我们都学习过吧,那么今天, 我就以骆驼祥子为例,来分析一下2018年在建站的过程中,对于数据库和索引技术方面,百度和谷歌等搜索巨头有哪些变化,以此来帮助我们更好的优化数据库结构,少走一些弯路. 博客程序我是接触的比较早的,可能是因为我是小白,在技术方面没有什么强项,因此在建站的过程中,我一般都采用博客程序,当然了,你可以选择ZLBOG或者wordpress都可以,这两款程序系统是我比较喜欢用的,不过我不喜欢用PHP建站,因为技术方面存在一