精华内容
下载资源
问答
  • 信息资料索引包括
    千次阅读
    2009-07-09 06:30:00

    斯坦福大学,信息实验室公开论文:

    http://infolab.stanford.edu/pub/

     

    斯坦福大学,数据库系统实现课程主页,包含课件等相关资料:

    http://infolab.stanford.edu/~ullman/dbsi.html

     

    Introduction to Information Retrieval电子书和相关资料:

    http://www-csli.stanford.edu/~hinrich/information-retrieval-book.html

     

    The Geometry of Information Retrieval电子书下载:

    http://rs61cg2.rapidshare.com/files/73699957/942482/The_Geometry_of_Information_Retrieval.pdf

     

    Foundations of Statistical Natural Language Processing电子书下载:

    http://xbean.cs.ccu.edu.tw/~dan/NLP/foundations_of_statistical_natural_language_processing.pdf

     

    北大整理的信息检索资料索引:

    http://sewm.pku.edu.cn/IR-Guide.txt

     

    斯坦福大学信息检索资源汇总:

    http://www-csli.stanford.edu/~hinrich/information-retrieval.html

     

    yahoo research publications:

    http://research.yahoo.com/publication

     

    Modeling the Internet and the Web  【2003年出版的一本书】

    http://ibook.ics.uci.edu/slides.html

     

    更多相关内容
  • 大部分情况下的sql优化的场景,都是发生在我们想让我们的sql语句运行的更快一点,这个时候我们往往会采取一些“措施”调整sql的执行路径以便它们能更快的运行结束。...今天我们先从sql优化中的统计信息索引这2个方...

    大部分情况下的sql优化的场景,都是发生在我们想让我们的sql语句运行的更快一点,这个时候我们往往会采取一些“措施”调整sql的执行路径以便它们能更快的运行结束。

    刚入dba行业,常常听到导师和我说的一句话“20%的sql优化技能就能优化80%的sql性能问题”。大部分情况下sql优化并不复杂,而很关键的一步是我们能不能发现问题,然后才能对症下药。今天我们先从sql优化中的统计信息、索引这2个方面来学习了解一下sql。

    对于cbo模式,统计信息极为重要,这是影响sql语句执行的一个重要的因素。对于数据变化量大的数据库,会很容易出现统计信息过旧的问题即系统记录的表信息和实际表的信息不一致。那么优化器在选择最优执行路径的时候就可能选择不合适的执行路径(非最优路径)。所以我们一线运维常常需要定期的收集统计信息。那么问题来了,统计信息收集依据呢?

    既然要收集,那么很多时候我们可以通过dba_tables视图中的LAST_ANALYZED字段看看上一次的收集日期,做个是否有必要做统计收集的预判断。

    sys@RAC>alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
    
    Session altered.    
    
    sys@RAC>select owner,TABLE_NAME,LAST_ANALYZED from dba_tables where table_name='T1';
    
    OWNER                TABLE_NAME           LAST_ANALYZED
    -------------------- -------------------- -------------------
    TEST                 T1                   2017-10-28 15:08:25

    既然有近一年没有收集过统计信息,那么这类表统计信息不准的嫌疑就会很大。

    还有一点就是当我们在看sql执行计划最后有输出dynamic sampling used for thisstatement ,那么说明本次sql执行发生了动态采样。动态采样是指在段(表,索引,分区)没有分析的情况下,为了使CBO 优化器得到足够的信息以保证做出正确的执行计划而发明的一种技术,可以把它看做系统自动收集统计信息的一种手段。当对象没有统计信息时(即没有做分析),动态采样技术可以通过直接从需要分析的对象抽样数据块来抽象出CBO需要的统计信息。

    动态采样需要额外的消耗数据库资源,所以如果SQL执行频率很高,这部分资源的消耗可能对sql执行效率的影响也会很大,这一点需要我们注意,在这样一个环境中,是不宜使用动态采样的。所以为了防止动态采样带来的系统性能的额外消耗,所以我们建议定期对数据库中的缺失或者过旧的统计信息表做定期的统计信息收集。

    在上述两种情况中,我们一般需要收集统计信息。那么,如何收集又是另外一个问题。

    示例:

    BEGIN
    DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => 'xxxxx',
                                TABNAME => 'SR_PROBLEM_xxxx',
                                PARTNAME=>'P201802',  
                                ESTIMATE_PERCENT => 1,
                                METHOD_OPT => 'FOR ALL COLUMNS SIZE 1',
                                NO_INVALIDATE=> FALSE,
                                FORCE=>TRUE,
                                CASCADE => TRUE,
                                DEGREE  => 10);
    END;
    /

    参数说明:

    · ownname:要分析表的拥有者

    · tabname:要分析的表名

    · partname:分区的名字,只对分区表或分区索引有用

    · estimate_percent:采样行的百分比,取值范围[0.000001,100]

    · method_opt:决定histograms信息是怎样被统计的,method_opt的取值如下(默认值为FOR ALL COLUMNS SIZE AUTO)

    · for columns <list> SIZE <N> |REPEAT | AUTO | SKEWONLY:统计指定列的histograms,N的取值范围[1,254]

    · force:即使表锁住了也收集统计信息

    · cascade:是收集索引的信息,默认为FALSE

    · degree:决定并行度,默认值为null

     

    那么只有上述两种情况需要收集统计信息么?答案显然是否定的。而且统计信息收集的参数丰富,这里也只是示例,够日常场景下使用而已。很多情况下还需要根据实际情况动态调整的。

     

    下面我们看看索引,在大多数场景下合理的使用索引会使sql语句的执行会有指数级的性能提升,但是索引虽然好,但是千万不能过度使用,因为维护索引需要消耗一定的资源的。

    如果一个数据表中存有海量的数据记录,当对表执行指定条件的查询时,常规的查询方法会将所有的记录都读取出来,然后再把读取的每一条记录与查询条件进行对比,最后返回满足条件的记录。这样进行操作的时间开销和I/O开销都很大。对于这种情况,就可以考虑通过建立索引来减小系统开销。

     

    如果要在表中查询指定的记录,在没有索引的情况下,必须遍历整个表,而有了索引之后,只需要在索引中找到符合查询条件的索引字段值,就可以通过保存在索引中的ROWID快速找到表中对应的记录。形象的描述就是类似字典目录的作用,能快速的查询到相关资料。

    现在我们常用的索引技术按照索引数据的存储方式可以将索引分为B树索引、位图索引、反向键索引和基于函数的索引等;按照索引列的唯一性可以分为唯一索引和非唯一索引;创建唯一性索引还能保证相关列内的数据的唯一性。按照索引列的个数可以分为单列索引和复合索引。

     

    建立和规划一个合理的能提速sql访问效率的索引需注意以下几点:

    1. 索引应该建立在WHERE子句频繁引用列表上,如果在大表上频繁使用某列或某几个列作为条件执行索引操作,并且检索行数低于总行数的15%(经验值),那么可以考虑在这些列上建立组合索引。

    2. 如果经常需要基于某列或者某几个列排序操作,那么应该在这些列上建立索引可以加快数据排序速度。

    3. 限制表的索引个数。索引主要用于加快查询速度,但会降低DML操作的速度。索引越多,DML操作速度越慢,尤其会极大地影响INSERT和DELETE操作的速度。因此,规划索引时,必须仔细权衡查询和DML的需求。

    4. 不适合建立索引的列的特点:很少进行搜索的列上;列取值比较少的列上;blob类型的列上等。

    5. 在创建过程中,千万不要中断,因为会导致oracle数据字典内已经包含了该索引的信息,但是却实际没有为该索引分配段,导致重新建立索引,并且删除索引报错。

     

    |  作者简介

    李誉军,沃趣科技数据库工程师

    主要参与公司产品实施、测试、维护以及优化。

    展开全文
  • 上一节我们讲解了聚集索引和非聚集索引的区别(索引知识系列一:聚集索引与非索引详解 ),我们知道非聚集索引在查询过程中有回表的过程,这就造成了效率的下降。那如何不用回表或者减少回表以提高查询速度呢?这...

    一、前言

    上一节我们讲解了聚集索引和非聚集索引的区别(索引知识系列一:聚集索引与非索引详解 ),我们知道非聚集索引在查询过程中有回表的过程,这就造成了效率的下降。那如何不用回表或者减少回表以提高查询速度呢?这就是本章要讲的内容。

    二、联合索引

    联合索引(也叫组合索引、复合索引、多列索引)是指对表上的多个列进行索引。联合索引的创建方法跟单个索引的创建方法一样,不同之处仅在于有多个索引列。

    开讲之前我们先弄一张学生表,表数据如下:
    在这里插入图片描述
    下面我们给出一个需求:查询表中以字母"L"开头的姓名及年龄。

    1、常规的写法(回表查询)

    SELECT name,age FROM `t_user` where name like 'l%' ;
    

    这种写法,明显效率是低下的,我们用explain 分析一下:
    在这里插入图片描述
    由图中可以看出,在数据库中进行了全表扫描。下面我们看一下数据库中的执行过程。

    第一步:全表扫描数据,找出以“l”开头的主键id.
    第二步:将所有查询出来的数据每一个都回表,根据id来查询出想要的数据。
    

    2.优化写法(索引覆盖)
    因为我们要查询name和age。所以,我们对name和age建立了联合索引,建立后的索引图如下:
    在这里插入图片描述
    从图中我们可以看出,叶子节点中的键值都是按顺序存储的并且都包含了名字和年龄,即(“Ann”,36)、(“HanMeimei”,17)、(“Kate”,17)、(“LiLei”,18)、(“Lili”,16)、(“Lisa”,19)、(“Lucy”,17)、(“WeiHua”,32)、(“ZhangWei”,18)、(“ZhangWei”,25)。

    索引会先根据 name 排序,如果 name 相同,再根据 age 进行排序。

    我们对name和age建立索引后,当我们查询name和age二个字段时,直接会从索引中查出来而不需要回表查询,这种方式就是索引覆盖。执行步骤是这样的:

    第一步:使用联合索引(name,age)查询以“l”开头的数据
    第二步:在索引中取出name和age.
    

    这种方式是不是高效多了,你要是还不信,我们用explain看一下,如下图:

    EXPLAIN SELECT name,age FROM `t_user` where name like 'l%' ;
    

    在这里插入图片描述
    从图中我们看的出,使用了(name,age)索引。

    2.1 联合索引最左匹配原则

    联合索引在使用的时候一定要注意顺序,一定要注意符合最左匹配原则。

    最左匹配原则:在通过联合索引检索数据时,从索引中最左边的列开始,一直向右匹配,如果遇到范围查询(>、<、between、like等),就停止后边的匹配。

    这个定义不太好理解,我解释一下:

    假如对字段 (a, b, c) 建立联合索引,现在有这样一条查询语句:

    where a > xxx and b=yyy and c=zzz
    where a like 'xxx%' and b=yyy and c=zzz
    

    在这个条件语句中,只有a用到了索引,后面的b,c就不会用到索引。这就是“如果遇到范围查询(>、<、between、like等),就停止后边的匹配。”的意思。

    我们还是假如对字段 (a, b, c) 建立联合索引,

    1.如下查询语句可以使用到索引:

    where a = xxx
    where a = xxx and b = xxx
    where a = xxx and b = xxx and c = xxx
    where a like 'xxx%'
    where a > xxx
    where a = xxx order by b
    where a = xxx and b = xxx order by c group by a
    

    2.如下查询条件也会使用索引:

    where b = xxx and a = xxx
    where a = xxx and c = xxx and b = xxx
    

    虽然b和a的顺序换了,但是mysql中的优化器会帮助我们调整顺序。

    3.如下查询条件只用到联合索引的一部分:

    where a = xxx and c = xxx   可以用到 a 列的索引,用不到 c 列索引。
    where a like 'xxx%' and b = xxx 可以用到 a 列的索引,用不到 b 列的索引。
    where a > xxx and b = xxx 可以用到 a 列的索引,用不到 b 列的索引。
    

    4.如下查询条件完全用不到索引

    where b = xxx
    where c = xxx
    where a like '%xxx'			-- 不满足最左前缀
    where d = xxx order by a	-- 出现非排序使用到的索引列 d 
    where a + 1 = xxx	-- 使用函数、运算表达式及类型隐式转换等
    

    如何选择合适的联合索引

    1.where a = xxx and b = xxx and c = xxx 如果我们的查询是这样的,建索引时,就可以考虑将选择性高的列放在索引的最前列,选择性低的放后边。

    2.如果是 where a > xxx and b = xxx 或 where a like ‘xxx%’ and b = xxx 这样的语句,可以对 (b, a) 建立索引。

    3.如果是 where a = xxx order by b 这样的语句,可以对 (a, b) 建立索引。

    三、索引覆盖

    索引覆盖在上面我们已经介绍了。由上面的介绍我们知道,建立了联合索引后,直接在索引中就可以得到查询结果,从而不需要回表查询聚簇索引中的行数据信息。

    索引覆盖可以带来很多的好处:

    • 辅助索引不包含行数据的所有信息,故其大小远小于聚簇索引,因此可以减少大量的IO操作。
    • 索引覆盖只需要扫描一次索引树,不需要回表扫描聚簇索引树,所以性能比回表查询要高。
    • 索引中列值是按顺序存储的,索引覆盖能避免范围查询回表带来的大量随机IO操作。 判断一条语句是否用到索引覆盖:

    这个我们需要用explain查看一下。
    在这里插入图片描述
    Using index 就表示使用到了索引 , 并且所取的数据完全在索引中就能拿到,也就是用到了索引覆盖。

    四、索引下推

    索引下推是索引下推是 MySQL 5.6 及以上版本上推出的,用于对查询进行优化。

    索引下推是把本应该在 server 层进行筛选的条件,下推到存储引擎层来进行筛选判断,这样能有效减少回表。

    举例说明:

    首先使用联合索引(name,age),现在有这样一个查询语句:

    select *  from t_user where name like 'L%' and age = 17;
    

    这条语句从最左匹配原则上来说是不符合的,原因在于只有name用的索引,但是age并没有用到。

    不用索引下推的执行过程:

    第一步:利用索引找出name带'L'的数据行:LiLei、Lili、Lisa、Lucy 这四条索引数据
    第二步:再根据这四条索引数据中的 id 值,逐一进行回表扫描,从聚簇索引中找到相应的行数据,将找到的行数据返回给 server 层。
    第三步:在server层判断age = 17,进行筛选,最终只留下 Lucy 用户的数据信息。
    

    使用索引下推的执行过程:

    第一步:利用索引找出name带'L'的数据行:LiLei、Lili、Lisa、Lucy 这四条索引数据
    第二步:根据 age = 17 这个条件,对四条索引数据进行判断筛选,最终只留下 Lucy 用户的数据信息。
    (注意:这一步不是直接进行回表操作,而是根据 age = 17 这个条件,对四条索引数据进行判断筛选)
    第三步:将符合条件的索引对应的 id 进行回表扫描,最终将找到的行数据返回给 server 层。
    

    比较二者的第二步我们发现,索引下推的方式极大的减少了回表次数。

    索引下推需要注意的情况:

    下推的前提是索引中有 age 列信息,如果是其它条件,如 gender = 0,这个即使下推下来也没用

    开启索引下推:

    索引下推是 MySQL 5.6 及以上版本上推出的,用于对查询进行优化。默认情况下,索引下推处于启用状态。我们可以使用如下命令来开启或关闭。

    set optimizer_switch='index_condition_pushdown=off'; 	-- 关闭索引下推
    set optimizer_switch='index_condition_pushdown=on';		-- 开启索引下
    

    五、结尾

    好了,本章就讲到这里吧,下一章,我们对所有的知识进行一下总结。

    另外大家帮忙关注我,每天更新优质内容。关注我有大量学习资料和学习视频赠送。
    在这里插入图片描述
    扫二维码关注公众号【Java程序员的奋斗路】可领取如下学习资料:
    1.1T视频教程(大约有100多个视频):涵盖Javaweb前后端教学视频、机器学习/人工智能教学视频、Linux系统教程视频、雅思考试视频教程,android.等
    2.项目源码:20个JavaWeb项目源码

    展开全文
  • 本文主要总结了工作中一些常用的操作及不合理的操作,在对慢查询进行优化时收集的一些有用的资料信息,本文适合有 MySQL 基础的开发人员。 索引相关 索引基数 基数是数据列所包含的不同值的数量,例如,...
  • 1、B-tree B-tree主要用来存放一维排序的数据元素 更擅长于数据点查,它的设计并不利于数据的范围查询 2、R-tree R-tree存放的是多维空间数据元素 3、Z curve ...6、倒排索引 7、网格索引 ...

    数据库索引

    1. MySQL是基于磁盘的数据库,索引是以索引文件的形式存在于磁盘中的,索引的查找过程就会涉及到磁盘IO消耗。磁盘IO的消耗相比较于内存IO的消耗要高好几个数量级,所以索引的组织结构要设计得在查找关键字时要尽量减少磁盘IO的次数。为什么要使用B/B+树,跟磁盘的存储原理有关。
    2. 索引是数据库中一个用于排序的数据结构,用来快速查询数据库中的数据。MySQL数据库使用B+树来实现索引的。B+树的特点就是叶子节点包含了所有的关键字信息和data数据,非叶子节点只包含子节点的最大或者最小关键字,用来实现索引。
    3. 建索引的优缺点:
      优点:大大加快对数据的查询速度
      缺点:占物理空间,对数据库进行增删改的时候也要动态的维护索引。
    4. 相关链接:
      以B tree和B+ tree的区别来分析mysql索引实现
      数据库索引详细介绍

    空间索引

    1. 空间索引可划分为两大类:1)基于哈希思想,如网格索引等;2)基于树思想,有四叉树、R树等。
    2. 相关资料:GIS空间索引技术

    1、B-tree

    1. B-tree是为磁盘等外存储设备设计的一种平衡查找树

    2. B-tree主要用来存放一维排序的数据元素

    3. 更擅长于数据点查,它的设计并不利于数据的范围查询

    4. B-tree相对于AVL树缩减了节点个数,在每次磁盘I/O取到内存的数据时都发挥了作用,从而提高了查询效率。

    5. 图示:B-tree

    6. 相关链接讲得是真好:Btree-----数据库相关

    2、B+ tree

    1. B+ tree是在B-tree基础上的一种优化,使其更适合实现外存储索引结构,InnoDB存储引擎就是用B+ tree实现其索引结构。
    2. B-tree的每个节点中不仅包含数据的key值,还有data值。而每一个页的存储空间是有限的,如果data数据较大时将会导致每个节点(即一个页)能存储的key的数量很小,当存储的数据量很大时同样会导致B-tree的深度较大,增大查询时的磁盘I/O次数,进而影响查询效率。在B+ tree中,所有数据记录节点都是按照键值大小顺序存放在同一层的叶子节点上,而非叶子节点上只存储key值信息,这样可以大大加大每个节点存储的key值数量,降低B+ tree的高度
    3. 通常在B+ tree上有两个头指针,一个指向根节点,另一个指向关键字最小的叶子节点,而且所有叶子节点(即数据节点)之间是一种链式环结构。因此可以对B+ tree进行两种查找运算:一种是对于主键的范围查找和分页查找,另一种是从根节点开始,进行随机查找。
    4. 在数据库中,B+Tree的高度一般都在2-4层。mysql的InnoDB存储引擎在设计时是将根节点常驻内存的,也就是说查找某一键值的行记录时最多只需要1~3次磁盘I/O操作。
    5. 相比于B-tree,B+ tree的读写代价更低,查询效率更加稳定。
    6. B+ tree更适合外部存储(一般指磁盘存储),由于内节点(非叶子节点)不存储data,所以一个节点可以存储更多的内节点,每个节点能索引的范围更大更精确。也就是说使用B+ tree单次磁盘IO的信息量相比较B-tree更大,IO效率更高。
    7. MySQL是关系型数据库,经常会按照区间来访问某个索引列,B+ tree的叶子节点间按顺序建立了链指针,加强了区间访问性,所以B+ tree对索引列上的区间范围查询很友好。而B-tree每个节点的key和data在一起,无法进行区间查找。
    8. B+树可以保证等值和范围查询的快速查找
    9. 图示:B+ tree
    10. 相关链接:
      Btree-----数据库相关
      以B tree和B+ tree的区别来分析mysql索引实现
      一文搞懂MySQL索引所有知识点(建议收藏)

    3、R-tree

    1. R-tree存放的是多维空间数据元素
    2. R树就是一棵用来存储高维数据的平衡树
    3. 二维:MBR(Minimum Bounding Rectangle)
      三维:MBB(Minimum Bounding Box)
    4. 用地图的例子来解释,就是所有的数据都是餐厅所对应的地点,先把相邻的餐厅划分到同一块区域,划分好所有餐厅之后,再把邻近的区域划分到更大的区域,划分完毕后再次进行更高层次的划分,直到划分到只剩下两个最大的区域为止。要查找的时候就方便了。
    5. 假设我们有一个地图路网要进行道路的快速索引,那么我们可以将每一条路的最小MBB作为R树的数据单元来进行构建R树。每一条路使用一个最小MBB来进行包裹,使它成为R树的叶子结点.
    6. R树很好理解,但是具体操作好复杂,想具体了解就看链接吧……
    7. 相关链接:空间数据索引RTree完全解析

    4、网格索引

    1. 对地理空间进行网格划分,划分成大小相同的网格,每个网格对应着一块存储空间,索引项登记上落入该网格的空间对象。
    2. 举个例子,我们将地理空间进行网格划分,并进行编号。该空间范围内有三个空间对象,分别是id=5的街道,23的河流和11的商圈。这时候我们可以按照哈希的数据结构存储,每个网格对应着一个存储桶,而桶里放着空间对象,比如对2号网格,里面存储着id=5的空间对象,对35号网格,桶里放着id=5和id=23的空间对象。在这里插入图片描述
    3. 缺点:
      1)索引数据冗余
      网格与对象之间多对多关系在空间对象数量多、大小不均时造成索引数据冗余。比如11号商圈这个空间对象在68,69,100,101这4个网格都有存储,浪费了大量空间。
      2)网格的大小难以确定
      网格的划分大小难以确定。网格划分得越密,需要的存储空间越多,网格划分的越粗,查找效率可能会降低。对于图a,这个查询需要查询4个网格,由于4个网格覆盖了整个空间,因此这个查找其实是将空间范围内所有的点数据都遍历一遍,失去了索引的意义。
      3)很多网格没有数据
      空间数据具有明显的聚集性,比如POI只在几个热点商贸区聚集,在郊区等地方很稀疏,这将导致很多网格内没有任何空间数据。
    4. 相关链接:
      空间索引–网格索引

    5、KD-tree

    1. KD-tree(k-dimensional树的简称),是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。K-D树是二进制空间分割树的特殊的情况。
    2. 好难这个……

    6、倒排索引

    1. 倒排索引理解起来很简单。比方说数据库里好多文档,你现在要找出所有包含“进程与线程”这个字符串的文档,那你一个文档一个文档扫描,时间开销必然是巨大的!那肿么办呢?我们可以根据你要搜索的关键字建一个索引!比如以“进程与线程”为索引键,它对应的就是包含“进程与线程”这个字符串的所有文章的id。当你查找“进程与线程”时,数据库会直接根据你这个索引找到所有文档的id,然后根据id找到文档返回给你。这样就快很多倍。
    2. 那么问题来了,如何建倒排索引呢?你怎么知道把哪些关键字作为索引呢?我也不知道。按个人感觉来看,这要视具体情况而定吧。

    7、Z-order curve

    1. 相关链接:多维空间点索引算法概述

    8、Hilbert curve

    1. Hilbert曲线以及其离散近似表示方法都非常实用,因为其将多维空间转换为一维空间的方法很好地保留了空间邻近性。(x, y)是一个单元方格中的点,d代表该点在Hilbert曲线上的位置,而由于其空间的邻近性,在单元格上近似的点,其对应Hilbert的d值也比较接近。
    2. 正因为这种邻近性,空间填充曲线被广泛用于计算机科学,且在多维数据库索引中,经常用Hilbert曲线取代Z order曲线。
    3. 相关链接:
      多维空间点索引算法概述
      HILBERT曲线介绍以及代码实现
    展开全文
  • 索引的数据结构.pdf

    2022-07-11 23:34:19
    索引的数据结构 索引的数据结构 1、什么是索引 在关系型数据库中,索引是⼀种单独的、物理的对数据库表中⼀列或多列的... 所有的叶结点都在同⼀层上,其可以看作是外部结点,不包含任何信息; 有 k 棵⼦树的⾮叶⼦结点
  • 详细介绍了各种高性能的索引使用策略,比如联合索引索引顺序、聚簇索引、覆盖索引等等,以及常见索引失效的情况。
  • 面试 索引优化

    千次阅读 2022-03-31 11:15:14
    面试 索引优化
  • 算法索引

    2021-07-24 02:29:22
    索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。算法索引是指算法集成包或API中算法调用接口按照某种规则排序。算法索引有利于对有关算法和调用。算法索引一般是指...
  • Pandas较详细的资料索引

    千次阅读 2020-12-22 21:31:00
    第三章、Pandas的索引 首先导入pandas工具包: import pandas as pd 一、索引器 1.序列的行索引 (1)以字符串为索引的 Series ①若取出单个索引的对应元素,则可以使用 [item] 或者 .item,若 Series 只有单个值...
  • MySQL之详解索引

    万次阅读 2021-03-30 19:29:22
    索引的使用4.1 索引相关语句4.1.1 单列索引之普通索引4.1.2 单列索引之唯一索引4.1.3 单列索引之全文索引4.1.4 组合索引4.1.5 删除索引4.1.6 查看索引5.索引原理分析5.1 索引的存储结构5.1.1 B树5.1.2 B树和B+树的...
  • Mysql索引知识概括

    千次阅读 2021-12-02 23:36:45
    Mysql索引知识概括索引详解索引分析 索引详解 性能下降SQL慢 、执行时间长 、等待时间长: 查询语句写的烂 索引失效 关联查询太多join(设计缺陷或不得已的需求) 服务器调优及各个参数设置(缓冲\线程数等) SQL执行...
  • 面试的时候,都会被问到索引有哪几种,一般我们都会回答:主键索引,唯一索引,全文索引等等。但是你回答的是具体的索引,实际上索引大体可以分成二大类:聚集索引和非聚集索引。下面我们具体介绍。 聚集索引 (又叫聚...
  • MySQL索引的概念以及七种索引类型介绍。
  • 索引的统计信息: 1.memory引擎根本不存储索引统计信息 2.MyISAM表存储引擎存放在磁盘中,analyzetable需要全索引扫描来计算基数,整个过程需要锁表 3.InnoDB有持久化统计信息和非持久化统计信息。 3.1持久化...
  • 图像信息隐藏(索引图象)

    千次阅读 2021-11-19 11:50:44
    索引图像包含一个调色板和一个索引板,每个像素值都由一个(索引值->色彩值)表示,常见的基于索引的图象格式有gif和8位的BMP图像。 2.基于索引图像的隐写术 基于索引图象的隐写术大抵分为两类,一是对调色板进行...
  • 精通MySQL之索引

    千次阅读 2021-03-15 02:26:42
    索引是什么?在日常开发中常常会遇到查询比较慢的情况,我们的第一反应就是给它加索引,那索引是什么呢?官方介绍索引是帮助MySQL高效获取数据的数据结构,数据库索引好比是一本书的目录,能加快数据库的数据查询...
  • mysql索引

    千次阅读 2022-04-08 17:41:21
    第一章 MySQL性能 1 分析-数据库查询效率低下 ​ 我们进入公司进行项目开发往往关注的是业务需求和...2.软优化: 在操作和设计数据库方面上进行优化,例如下面讲解的索引。这是我们本课程学习的重点。(重点) 2 分析-执
  • oracle重建表索引语句

    千次阅读 2021-05-06 01:36:46
    移动索引组织表 索引组织表是基于 B Oracle 修改索引组织表 与普通表一个,索引组织表也可以......Oracle 删除索引 删除索引是使用 DROP INDEX 语句完成的。一般情况下,删除索引是由索引所有者完 成的,如果以其他用户...
  • MySQL索引设计规范

    2022-01-26 16:26:31
    因为 MySQL 优化器在选择如何优化查询时,会根据统一信息,对每一个可以用到的索引来进行评估,以生成出一个最好的执行计划,如果同时有很多个索引都可以用于查询,就会增加 MySQL 优化器生成执行计划的时间,同样会...
  • MySQL普通索引与唯一索引 索引作用: 提高查询效率,一般加在经常查询或者排序的字段上。 普通索引: 允许字段值重复 唯一索引: 保证数据记录唯一性 如何选择: 查询过程: 对普通索引来说,找到满足条件的第一个...
  • MySQL索引结构原理分析

    千次阅读 2021-02-02 06:52:16
    我们在学习MySQL的时候经常会听到索引这个词,大概也知道这是什么,但是深究下去又说不出什么道道来。下面将会比较全面的介绍一下关于索引索引是什么?这里用百度百科的一句话来说,在关系数据库中,索引是一种...
  • 主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。外键(foreign key)是用于建立和加强两个表数据之间的链接的一列或多列。外键约束主要用来维护两个表之间...
  • MySQL索引详解之索引的数据结构

    千次阅读 2020-04-21 18:53:22
    很多人对数据库索引可能都是知其然却不知其所以然,对索引没有很深入的理解,在使用过程中也一知半解,导致没有办法准确高效地使用索引,甚至存在不少误用的情况,导致使用索引反而降低了系统的性能。下面就以MySQL...
  • MySQL|mysql-索引

    千次阅读 2021-01-27 23:11:50
    1、索引是什么1.1索引简介索引是表的目录,是数据库中专门用于帮助用户快速查询数据的一种数据结构。类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,以及快速定位查询数据。对于索引,会保存...
  • SQL语句优化1 企业SQL优化思路1、把一个大的不使用索引的SQL语句按照功能进行拆分2、长的SQL语句无法使用索引,能不能变成2条短的SQL语句让它分别使用上索引。3、对SQL语句功能的拆分和修改4、减少“烂”SQL由运维...
  • 理解正向索引

    千次阅读 2020-12-09 08:52:16
    倒排索引也叫做反向索引(inverted单词也有反转的意思,只不过大家喜欢翻译成倒排索引)。倒排索引在搜索引擎中经常用到,倒排索引也叫做反向索引。某天在想,为什么叫做倒排索引呢?倒过来的,反转过来的。那么,非倒...
  • R 树利用空间实体外接矩形建立空间索引。R 树空间索引建立每个实体的外接矩形...R 树空间索引就是按包含实体的矩形来确定的,树的层次表达了分辨率信息,每个实体与R 树结点相联系,这点与四叉树相同。矩形数据结
  • MySQL索引(二):建索引的原则

    千次阅读 2021-01-28 06:48:51
    在了解了索引的基础知识及B+树索引的原理后(如需复习请点这里),这一节我们了解一下有哪些建索引的原则,来指导我们去建索引。建索引的原则1. 联合索引我们可能听一些数据库方面的专业人士说过:“把 Where 条件里面...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 123,806
精华内容 49,522
热门标签
关键字:

信息资料索引包括