精华内容
下载资源
问答
  • SQL高级-索引

    2020-07-30 12:36:34
    索引什么是索引索引的优缺点索引原理索引使用索引案例 什么是索引 索引种特殊的查询表,可以被数据库搜索引擎用来加速数据的检索。简单说来,索引就是指向表中数据的指针。数据库的索引同书籍目录索引非常...

    什么是索引

    索引是一种特殊的查询表,可以被数据库搜索引擎用来加速数据的检索。简单说来,索引就是指向表中数据的指针。数据库的索引同书籍目录的索引非常相像

    索引的优缺点

    • 优点
      • 加快查询速度
      • 通过创建唯一索引,保证数据库表每行数据的唯一性
      • 在使用分组和排序进行数据查询时,可以显著减少查询中分组和排序的时间
    • 缺点
      • 维护索引需要耗费数据库资源
      • 当对表的数据进行增删改的时候,因为要维护索引,速度会受到影响

    索引原理

    B tree
    B树是一种多路自平衡搜索树,它类似普通的二叉树,但是B书允许每个节点有更多的子节点
    在这里插入图片描述

    索引的分类

    分类角度 索引名称
    数据结构 B+树,Hash索引,B-Tree等
    存储层面 聚簇索引,非聚簇索引
    逻辑层面 主键索引,普通索引,复合索引(MySQL 组合索引和联合索引和复合索引都是一个东西),唯一索引,空间索引等

    索引的使用

    • 查看索引
      SHOW INDEX FROM 表名;
      
    • 创建索引
      • 如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致
      • 字段类型如果不是字符串,可以不填写长度部分
      CREATE INDEX 索引名 ON 表名(字段名称(长度));
      
    • 删除索引
      DROP INDEX 索引名 ON 表名;
      

    索引案例

    • 创建测试表
      CREATE TABLE test(title varchar(10));
      
    • 使用python程序向表中加入十万条数据
    • 开启运行时间监测
      set profiling=1;
      
    • 查看执行时间
      show profiles;
      
    • 举例说明
      在这里插入图片描述
    • 适合建立索引的情况
      • 主键自动建立索引
      • 频繁作为查询条件的字段可以建立索引
      • 查询中与其他表关联的字段,外键关系建立索引
      • 在高并发的情况下创建复合索引
      • 查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度 (建立索引的顺序跟排序的顺序保持一致)
    • 不适合建立索引的情况
      • 频繁更新的字段不适合建立索引
      • where条件里面用不到的字段不创建索引
      • 表记录太少,当表中数据量很大时,可以考虑建立索引
      • 数据重复且平均的表字段,比如性别,国籍
    展开全文
  • 首次出现在文档中、添加索引项1.2、将文档中全部的[半糖]、添加索引项1.3、在[索引]标题下面、插入使用[正式]格式的索引、不设置类别、页码右对齐1.4、更新索引、使其包含所有已标记的条目2、创建和管理目录、题注...

    1、创建和管理索引

    1.1、当文本[流萤]首次出现在文档中时、添加索引项

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1.2、将文档中全部的[半糖]、添加索引项

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1.3、在[索引]标题下面、插入使用[正式]格式的索引、不设置类别、页码右对齐

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1.4、更新索引、使其包含所有已标记的条目

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2、创建和管理目录、题注和图表目录

    2.1、更改目录、使其具有标题2、保持相同的格式

    在这里插入图片描述
    在这里插入图片描述

    2.2、在图片的下方插入题注[小红花]、[图一]为自动添加

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.3、在[题注]下方使用图片目录、使用[优雅]格式

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3、创建和管理域

    3.1、在文字[上次修改日期]后面插入[Savedate]域、使用日期格式为[MMMM d,yyyy]

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3.2、在[报名日期]右侧、更改[Date]域、使日期显示为[dddd,MMMM d,yyyy]

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3.3、新建收件人列表、名[Jerry],姓[James]、将列表保存到[我的数据源]文件夹、其名为[晚会嘉宾]、使用该数据源、在[尊敬的]后面插入[姓氏]域、将属性设置为[大写]

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 空间索引

    2014-02-10 11:41:36
    目录树中创建空要素类或导入数据以创建新要素类,将创建一个空间索引。空间索引用于编辑和加载数据。数据源不同,空间索引的工作方式也不同。DB2 中的个人、文件和企业地理数据库、Oracle 和 SQL Server 中...

    ArcGIS 使用空间索引来快速查找要素类中的要素。识别要素、通过点选或框选来选择要素以及平移和缩放都需要 ArcMap 使用空间索引来查找要素。

    在目录树中创建空要素类或导入数据以创建新要素类时,将创建一个空间索引。空间索引用于编辑和加载数据。数据源不同,空间索引的工作方式也不同。DB2 中的个人、文件和企业级地理数据库、Oracle 和 SQL Server 中采用二进制几何存储的企业级地理数据库以及 Oracle 中采用 ST_Geometry 存储的企业级地理数据库都使用基于格网的空间索引。Oracle Spatial、Informix 和 PostgreSQL 不使用格网大小 - 它们使用 R 树索引。同样,对于 SQL Server 空间类型,空间索引也不使用格网。

    展开全文
  • 数据库学习之让索引加快查询速度目录索引简介索引在MySQL中也叫做"键",是存储引擎用于快速找到记录的种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大索引对于性能的影响愈发重要。...

    数据库学习之让索引加快查询速度

    目录

    索引简介

    索引在MySQL中也叫做"键",是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。

    索引优化应该是查询优化最有效的手段了。

    索引能够轻易将查询性能提高好几个数量级。

    索引相当于字典的音序表,如果要查某个字,如果要查某个字,如果不使用音序表,则需要从几百页中逐页去查。

    索引特点:创建与维护索引会消耗很多时间与磁盘空间,但查询速度大大提高。

    索引的功能就是加速查找。

    mysql中的primary key,unique,联合唯一也都是索引,这些索引除了加速查找以外,还有约束的功能。

    MySQL的索引分类

    索引分类

    1.普通索引index :加速查找

    2.唯一索引

    主键索引:primary key :加速查找+约束(不为空且唯一)

    唯一索引:unique:加速查找+约束 (唯一)

    3.联合索引(多列索引)

    -primary key(id,name):联合主键索引

    -unique(id,name):联合唯一索引

    -index(id,name):联合普通索引

    4.全文索引fulltext :用于搜索很长一篇文章的时候,效果最好。

    5.空间索引spatial :了解就好,几乎不用

    创建索引

    创建索引的语法

    CREATE TABLE 表名 (

    字段名1 数据类型 [完整性约束条件…],

    字段名2 数据类型 [完整性约束条件…],

    [UNIQUE | FULLTEXT | SPATIAL ] INDEX | KEY

    [索引名] (字段名[(长度)] [ASC |DESC])

    );

    创建表时创建索引

    创建 普通索引示例:

    CREATE TABLE emp1(

    id INT,

    name VARCHAR(20),

    resume VARCHAR(50),

    INDEX index_emp_name (name)

    );

    创建唯一索引示例:

    CREATE TABLE emp2(

    id INT,

    name VARCHAR(30),

    bank_num CHAR(10),

    resume VARCHAR(50),

    UNIOUE INDEX index_emp_name (name)

    );

    创建 全文索引示例:

    CREATE TABLE emp3(

    id INT,

    name VARCHAR(30),

    resume VARCHAR(50),

    FULLTEXT INDEX index_name_resume (resume)

    );

    创建多列索引示例:

    CREATE TABLE emp4(

    id INT,

    name VARCHAR(30),

    resume VARCHAR(50),

    INDEX index_name_resume (name,resume)

    );

    添加与删除索引

    添加索引的语法

    CREATE 在已存在的表上创建索引

    CREATE [UNIOUE | FULLTEXT | SPATIAL] INDDX 索引名 ON 表名 [字段名(长度)] [ASC | DESC];

    ALTER TABLE 在已存在的表上创建索引

    ALTER TABLE 表名 ADD [UNIOUE | FULLTEXT | SPATIAL] INDDX 索引名 [字段名(长度)] [ASC | DESC];

    添加索引的例子

    CREATE INDEX index_emp_name on emp1(name); #创建普通索引

    ALTER TABLE emp2 ADD UNIOUE INDEX index_emp_name(name) #创建唯一索引

    alter table emp2 add primary key(id); #添加住建索引,也就是给id字段增加一个主键约束

    create index index_emp_name on emp5(id,name); #添加普通联合索引

    删除索引语法

    语法:DROP INDEX 索引名 on 表名;

    删除索引的例子

    DROP INDEX index_emp_name on emp1; #删除普通索引

    DROP INDEX index_emp_name on emp2; #删除唯一索引,就和普通索引一样,不用在index前加unique来删,直接就可以删了

    alter table s1 drop primary key; #删除主键(因为它添加的时候是按照alter来增加的,那么我们也用alter来删)

    举个例子来说,比如你在为某商场做一个会员卡的系统。

    这个系统有一个会员表

    有下列字段:

    会员编号 INT

    会员姓名 VARCHAR(10)

    会员身份证号码 VARCHAR(18)

    会员电话 VARCHAR(10)

    会员住址 VARCHAR(50)

    会员备注信息 TEXT

    那么这个 会员编号,作为主键,使用 PRIMARY

    会员姓名 如果要建索引的话,那么就是普通的 INDEX

    会员身份证号码 如果要建索引的话,那么可以选择 UNIQUE (唯一的,不允许重复)

    #除此之外还有全文索引,即FULLTEXT

    会员备注信息 , 如果需要建索引的话,可以选择全文搜索。

    用于搜索很长一篇文章的时候,效果最好。

    用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。

    但其实对于全文搜索,我们并不会使用MySQL自带的该索引,而是会选择第三方软件如Sphinx,专门来做全文搜索。

    #其他的如空间索引SPATIAL,了解即可,几乎不用

    索引基础总结

    索引是什么:Mysql官方定义:索引是帮助Mysql高效获取数据的数据结构,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。

    数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引,索引的实现通常使用B树及其变种B+树。

    我们平常所说的索引,如果没有特别指明,都是指B树(平衡树」(非二叉))结构组织的索引。

    其中聚焦复合索引,前缀索引,唯一索引默认都是使用B+树索引,统称索引。

    当然,除来B树这种类型的索引之外,还有哈希索引(hash index)等

    8ba536f703d72f10fad381df4ab8abc7.png

    优点

    第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

    第二,可以大大加快数据的检索速度,降低了数据库的IO成本,这也是创建索引的最主要的原因。

    第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

    第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

    第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

    缺点

    第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

    第二,索引实际上是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以列也是要占用物理空间,除此之外,如果要建立聚簇索引,那么需要的空间就会更大。

    第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

    虽然索引大大提高了查询速度,同时却会降低更新表的速度,当对表中的数据进行增加、删除和修改的时候,,Mysql不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,都会调整因为更新带来的键值变化后的索引信息。

    索引可以建立在数据库表中哪些列的上面?

    1.在经常需要搜索的列上,可以加快搜索的速度;

    2.在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;

    3.在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;

    4.在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;

    5.在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。

    总结:

    1.主键自动建立唯一索引

    2.频繁作为查询条件的字段应该创建索引

    3.查询中于其它表关联的字段,外键关系建立索引

    4.频繁更新的字段不适合创建索引

    5.where条件里用不到的字段不创建索引

    6.单键/组合索引的选择问题,在高并发倾向创建组合索引

    7.查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度

    索引不可以建立在数据库表中哪些列的上面?

    1.对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。

    2.对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。

    3.对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。

    4.当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。

    总结:

    1.表记录太少

    2.经常增删改的表

    3.数据重复且分布平均的表字段,因此应该只为最经常查询和最经常排序的数据列建立索引

    索引分类

    单值索引

    即一个索引只包含单个列,一个表可以有多个单列索引。

    唯一索引

    唯一索引是索引列的值必须唯一,单允许有空值。

    复合索引

    即一个索引包含多个列。

    基本语法

    创建索引语法:

    CREATE [UNIQUE] INDEX [indexName] ON [table_name(columnname(length))]

    ALTER [table_name] ADD [UNIQUE] INDEX [indexName] ON (columnname(length))

    删除索引语法:

    DROP INDEX [indexName] ON [table_name]

    查看索引语法:

    SHOW INDEX FROM [table_name]

    1910d426276ac28cbcf3e6c9ab5df6b8.png

    mysql索引结构

    BTree索引

    Hash索引

    full-text全文索引

    R-Tree索引

    展开全文
  • 数据库学习之让索引加快查询速度目录索引简介mysql的索引分类创建索引添加与删除索引索引简介索引在MySQL中也叫做"键",是存储引擎用于快速找到记录的种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据...
  • 3.18 节使用可关闭Tabs 创建一个TabNavigator 3.19 节创建和控制Alert 3.20 节根据呼出组件设置对话框的尺寸和位置 3.21 节管理多个弹出对话框 3.22 节在容器中滚动到某个指定的子组件 3.23 节使用IdeferredInstance...
  • 4.联合索引 将多个键放在创建联合索引,可以覆盖多个列。 <h5>2.索引对数据库的影响? <p>1.大大减少服务器需要扫描的数据量 2.改变随机IO为顺序IO 3.帮助服务器避免排序和临时表 <h5>3.索引的类型...
  • 03 - SQL高级

    2020-08-17 22:00:21
    视图(View):种虚拟存在的表,对使用视图的用户来说是透明的,视图中的行列来自于创建视图所选择的表,并不会独立占用内存,会在使用时动态生成。 基本语句 创建视图 create view v_name as select 字段名...
  • 创建时使用小括号:Tuple=()可以存储多个数据:Tuple=(1,2,3)索引从0开始。Tuple=(1,2,3)Tuple[0]#下标获得值"""结果:1"""末尾索引从-1开始。Tuple=(1,2,3)Tuple[-1]#下标获得值"""结果:3"""不能使用tuple[Index]=...
  • 2020-8-5 PostgreSQL高级

    2020-08-05 19:59:12
    公司为期两天的入职培训...个数据库中的索引与本书的索引目录是非常相似的。 索引有助于加快select查询和where子句,但他会减慢使用update和insert语句的数据输入。索引可以创建或删除,但不会影响数据。 使用c
  • MySQL构建百万数据

    2020-07-28 17:51:42
    在进行环境测试,往往会用到可能很庞大的数据量,这个数据量就需要我们自己生成,借助内存表我们可以用以下方式生成。 以下操作基于MySQL8.0.15 ...内存表使用hash索引把数据保存在内存中,具有更快的
  • Oracle专家高级编程--详细书签版

    热门讨论 2012-08-21 11:57:09
    本书的内容涵盖了我所见的人们每天都可能遇到的主题和问题,并从“当我使用,我将以下面的方式进行”的角度讨论这些问题.本书是多年来在无数不同的情况下使用Oracle产品的经验的结晶. Thomas Kyte是Oracle公司...
  • 6.6.2 使用字段和索引创建新表 133 6.6.3 通过加入索引来修改现有表 136 6.7 小 结 136 第7章 使用VBA处理Access中的错误 138 7.1 Access中的错误消息 138 7.2 使用错误处理程序的不同方法 139 7.3 ...
  • php高级开发教程说明

    2008-11-27 11:39:22
    情况,应该考虑到这一点,应从目录列举器中创建一个分离的模块,允许它列举不同的 目录,有选择性地递推子目录,甚至允许使用通配符,你可以创建一个“防弹”函数,它即能 处理大多数特例,又能完美地应付个...
  • C#与.NET3.5高级程序设计第四版高清PDF中文完整版

    千次下载 热门讨论 2011-07-05 10:25:50
    27.2 创建一个简单的windows forms 程序(不用ide)  27.3 visual studio windows forms项目模板  27.4 剖析form  27.5 响应鼠标活动  27.6 响应键盘活动  27.7 设计对话框  27.8 通过gdi+呈现图形数据...
  • 6.6.2 使用字段和索引创建新表 133 6.6.3 通过加入索引来修改现有表 136 6.7 小 结 136 第7章 使用VBA处理Access中的错误 138 7.1 Access中的错误消息 138 7.2 使用错误处理程序的不同方法 139 7.3 Access运行...
  • 创建时使用小括号: Tuple=() 可以存储多个数据: Tuple=(1,2,3) 索引从0开始。 Tuple=(1,2,3) Tuple[0]#下标获得值 """ 结果: 1 """ 末尾索引从-1开始。 Tuple=(1,2,3) Tuple[-1]#下标获得值 """ 结果: 3 """ ...
  • C#高级编程

    2012-09-14 11:12:46
    13.4 使用ThreadPool创建线程...... 330 13.5 小结...... 334 第Ⅱ部分 .NET 环 境 第14章 Visual Studio 2005.. 337 14.1 使用Visual Studio 2005... 337 14.1.1 创建项目..... 341 14.1.2 解决方案和项目..... 347...
  • C语言接口与实现:创建可重用软件的技术.pdf

    千次下载 热门讨论 2011-09-30 17:46:11
    本书概念清晰、内容新颖、实例详尽,是本有关设计、实现和有效使用c语言库函数,掌握创建可重用c语言软件模块技术的参考指南。本书倡导基于接口的c语言设计理念及其实现技术,深入详细地描述了24个c语言接口及其...
  • 2.2.1 在编译进行配置 2.2.2 用Apache命令进行配置 2.2.3 利用php.ini文件进行配置 2.3 MySQL 2.3.1 安装MySQL 2.3.2 配置系统的访问权限 2.4 Boutell的GD库:支持创建GIF图片 2.5 Expat - XML分析支持 ...
  • deepin-wine应用第次启动后会在~/.deepinwine/目录下生成个文件夹(名字各不相同)用于存储wine容器(可以理解我个“Windows虚拟机”),如果使用出了问题,可以试试删除这个目录下对应的子文件夹。...
  • 19.2.5 使用半双工管道的注意事项 188 19.3 命名管道 188 19.3.1 基本概念 188 19.3.2 创建FIFO 188 19.3.3 FIFO操作 189 19.3.4 FIFO的阻塞 190 19.3.5 SIGPIPE信号 190 19.4 System V IPC 190 19.4.1 基本概念 ...
  • 3.5.2 增强的联机索引创建和重建 120 3.5.3 增强的默认列值功能 120 3.5.4 联机重组实体化视图 121 3.5.5 使依赖对象的无效性最小化 121 3.6 Oracle增强的表压缩选项 122 3.6.1 新压缩特性的工作原理 122 ...
  • 14.4. 使用Maven Archetype创建一个Maven项目 14.5. 创建一个Maven模块 14.6. 为个新的Maven模块选择个父项目 14.7. 创建一个新的POM 14.8. 为新的POM添加依赖 14.9. 向中央仓库查询依赖 14.10. 导入个Maven...
  • C#高级编程(第6版)

    2011-05-11 11:10:30
     2.2 第个C#程序  2.2.1 代码  2.2.2 编译并运行程序  2.2.3 详细介绍  2.3 变量  2.3.1 变量的初始化  2.3.2 类型推断  2.3.3 变量的作用域  2.3.4 常量  2.4 预定义数据类型  2.4.1 值类型和引用类型...
  • C#高级编程(第6版)

    2010-12-17 09:01:41
    目录 第Ⅰ部分 C# 语言  第1章 .NET体系结构  1.1 C#与.NET的关系  1.2 公共语言运行库  1.2.1 平台无关性  1.2.2 提高性能  1.2.3 语言的互操作性  1.3 中间语言  1.3.1 面向对象和接口的支持  1.3.2 相...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 461
精华内容 184
关键字:

创建索引目录时一级目录使用