精华内容
下载资源
问答
  • mysql索引类型和索引方法

    千次阅读 2017-06-26 16:01:34
    mysql索引类型normal,unique,full text的区别是什么? normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique FullText:表示 全文...
    mysql索引类型normal,unique,full text的区别是什么?
    
    normal:表示普通索引
    unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique
    FullText:表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。
    总结,索引的类别由建立索引的字段内容特性来决定,通常normal最常见。

    mysql索引方法:

    Hash这个词,可以说,自打我们开始码的那一天起,就开始不停地见到和使用到了。其实,hash就是一种(key=>value)形式的键值对,如数学中的函数映射,允许多个key对应相同的value,但不允许一个key对应多个value。正是由于这个特性,hash很适合做索引,为某一列或几列建立hash索引,就会利用这一列或几列的值通过一定的算法计算出一个hash值,对应一行或几行数据(这里在概念上和函数映射有区别,不要混淆)。在java语言中,每个类都有自己的hashcode()方法,没有显示定义的都继承自object类,该方法使得每一个对象都是唯一的,在进行对象间equal比较,和序列化传输中起到了很重要的作用。hash的生成方法有很多种,足可以保证hash码的唯一性,例如在MongoDB中,每一个document都有系统为其生成的唯一的objectID(包含时间戳,主机散列值,进程PID,和自增ID)也是一种hash的表现。
    由于hash索引可以一次定位,不需要像树形索引那样逐层查找,因此具有极高的效率。那为什么还需要其他的树形索引呢?

    (1)Hash 索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询。 
    由于 Hash 索引比较的是进行 Hash 运算之后的 Hash 值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的 Hash 算法处理之后的 Hash 值的大小关系,并不能保证和Hash运算前完全一样。 
    (2)Hash 索引无法被用来避免数据的排序操作。 
    由于 Hash 索引中存放的是经过 Hash 计算之后的 Hash 值,而且Hash值的大小关系并不一定和 Hash 运算前的键值完全一样,所以数据库无法利用索引的数据来避免任何排序运算; 
    (3)Hash 索引不能利用部分索引键查询。 
    对于组合索引,Hash 索引在计算 Hash 值的时候是组合索引键合并后再一起计算 Hash 值,而不是单独计算 Hash 值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash 索引也无法被利用。 
    (4)Hash 索引在任何时候都不能避免表扫描。 
    前面已经知道,Hash 索引是将索引键通过 Hash 运算之后,将 Hash运算结果的 Hash 值和所对应的行指针信息存放于一个 Hash 表中,由于不同索引键存在相同 Hash 值,所以即使取满足某个 Hash 键值的数据的记录条数,也无法从 Hash 索引中直接完成查询,还是要通过访问表中的实际数据进行相应的比较,并得到相应的结果。 
    (5)Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。 
    对于选择性比较低的索引键,如果创建 Hash 索引,那么将会存在大量记录指针信息存于同一个 Hash 值相关联。这样要定位某一条记录时就会非常麻烦,会浪费多次表数据的访问,而造成整体性能低下。

    BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中,相信学过数据结构的童鞋都对当初学习二叉树这种数据结构的经历记忆犹新,反正愚安我当时为了软考可是被这玩意儿好好地折腾了一番,不过那次考试好像没怎么考这个。如二叉树一样,每次查询都是从树的入口root开始,依次遍历node,获取leaf。
    BTREE在MyISAM里的形式和Innodb稍有不同
    在 Innodb里,有两种形态:一是primary key形态,其leaf node里存放的是数据,而且不仅存放了索引键的数据,还存放了其他字段的数据。二是secondary index,其leaf node和普通的BTREE差不多,只是还存放了指向主键的信息.
    而在MyISAM里,主键和其他的并没有太大区别。不过和Innodb不太一样的地方是在MyISAM里,leaf node里存放的不是主键的信息,而是指向数据文件里的对应数据行的信息.

    转载:http://blog.csdn.net/dyllove98/article/details/9631303/

    展开全文
  • 索引使用方法

    千次阅读 2019-02-15 17:01:49
    解决以下几个问题 如何定位并优化慢查询sql 联合索引的最左匹配原则的成因 ...方法: 使用show variables like '%quer%' 查询出Mysql关于查询的配置项来。 long_query_time:10.00000 代表每次sql执行10秒就会判...

    解决以下几个问题

    • 如何定位并优化慢查询sql
    • 联合索引的最左匹配原则的成因
    • 索引是建立得越多越好吗

    如何定位并优化慢SQL

    思路:先根据慢日志定位慢查询sql再使用explain等工具分析sql
    方法:

    1. 使用show variables like '%quer%' 查询出Mysql关于查询的配置项来。在这里插入图片描述
        long_query_time:10.00000 代表每次sql执行10秒就会判定为慢sql
        slow_query_log: 是否打开慢sql记录
        slow_query_log_file: 日志保存的地址
    
    1. 查询慢查询的数量
    show status like '%slow_queries%'
    

    在这里插入图片描述

    1. 参数设置

    打开慢查询

    set global slow_query_log = on;
    set global long_query_time = 1; 
    

    这个参数设置之后,要重新连接才会显示成功。 在这里设置的参数,重启数据库后会失效。

    1. explain解析sql

    在这里插入图片描述
    这几条比较关键
    id 代表执行顺序, select_type 代表是否为复杂查询 rows 代表查询了多少行。

    type: type代表检索等级all是最差的全表扫描。
    在这里插入图片描述
    extra:
    在这里插入图片描述

    详情可以看
    https://www.cnblogs.com/gomysql/p/3720123.html

    1. 调优
      在关键字上加索引就可以了。这里也要注意索引的命中率,索引的长度是对索引的命中率是有影响的。
      在这里插入图片描述
    • 联合索引, 也就是在栏位中选择两个字段。 创建成一个索引。在这里插入图片描述
      在使用联合索引的时候要注意最左原则,在创建索引的时候关键字是有顺序的,当在使用where条件查询的时候只有当使用最左边这个关键字或者两个关键字都使用的时候才会使用索引 。 否则就会直接全表扫描。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      这样就会走全表扫描。

    最左匹配原则的成因
    在这里插入图片描述
    叶子节点的数据也就是一行数据要是有序排列的,需要先找到alice 才能在 判断下面的数据。

    展开全文
  • 字符串索引方法

    千次阅读 2019-03-20 21:42:45
    字符串[(开始索引b):(结束索引e)(:(步长s))] 注: 小括号() 括起的部分代表可以省略 语法说明: 1. 开始索引是切片切下的位置,0代表第一个元素,1代表第二个元素,-1 代表最后一个元素 2. 结束索引是切片的终止...

    切片 slice
      从字符串序列中取出相应的元素,重新组成一个字符串序列

      语法:
        字符串[(开始索引b):(结束索引e)(:(步长s))]
        注: 小括号() 括起的部分代表可以省略
      语法说明:
        1. 开始索引是切片切下的位置,0代表第一个元素,1代表第二个元素,-1 代表最后一个元素
        2. 结束索引是切片的终止索引(但不包含终止点)
        3. 步长是切片每次获取完当前元素后移动的方向和偏移量
           1) 没有步长,相当于取值完毕后向右移动一个索引的位置(默认为1)
           2) 当步长为正整数时,最正向切片
           3) 当步长的负整数时,取反向切片
             反向切片时,默认的起始位置为最后一个元素,终止位置是第一个元素的前一个位置

    展开全文
  • 1 避免使用字符串索引  字符串索引与数字索引有一些方面如果没做好会非常的慢。  事情的起因是线上日志发现的mysql慢查询。100万数据量的标准,联合查询全部走索引的情况下,尽然要600多毫秒。很不解,但是将...

    1 避免使用字符串索引

           字符串索引与数字索引有一些方面如果没做好会非常的慢。

      事情的起因是线上日志发现的mysql慢查询。100万数据量的标准,联合查询全部走索引的情况下,尽然要600多毫秒。很不解,但是将索引列由varchar(50)型改为bigint型后,数据提升了30倍。究其原因就索引树上搜索时要进行大量的比较操作,而字符串的比较比整数的比较耗时的多。

      所以建议一般情况下不要在字符串列建立索引,如果非要使用字符串索引,可以采用以下两种方法:

      1.只是用字符串的最左边n个字符建立索引,推荐n<=10;比如index left(address,8),但是需要知道前缀索引不能在order by中使用,也不能用在索引覆盖上。

      2.对字符串使用hash方法将字符串转化为整数,address_key=hashToInt(address),对address_key建立索引,查询时可以用如下查询where address_key = hashToInt(‘beijing,china’) and address = ‘beijing,china’;


    展开全文
  • 常见的空间索引方法

    万次阅读 多人点赞 2018-05-21 15:51:17
    在谈论空间索引之前,我们必须了解索引的概念。索引是为了提高数据集的检索效率。打个比喻,一本书的目录就是这本书的内容的“索引”,我们查看感兴趣的内容前,通过查看书的目录去快速查找对应的内容,而不是...
  • 【0052】mysql索引类型及索引方法

    千次阅读 2017-06-24 22:00:25
    mysql索引类型normal,unique,full text的区别是什么? normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique full textl: 表示 ...
  • 索引失效原因及解决索引失效方法

    万次阅读 2018-04-08 14:20:19
    原文:...准备工作创建student表,id是主键创建复合索引?1create index idx_name_age on student(name,age);查看索引?1show index from student;二.索引失效原因1.全值匹配我最爱?1explain select * ...
  • 详述 Elasticsearch 通过范围条件查询索引数据的方法

    万次阅读 多人点赞 2019-04-05 11:15:59
    在使用 Elasticsearch 的时候,我们可能会遇到需要**以范围为条件查询索引数据**的需求。有两种方法可以实现我们的需求: - 第一种:在服务器...接下来,我们就以**时间范围**为例,详述这两种查询索引数据的方法
  • 创建复合索引 1 create index idx_name_age on student(name,age); 查看索引 1 show index from student; 二.索引失效原因 1.全值匹配我最爱 1 ...
  • mysql索引类型Normal,Unique,Full Text区别  Normal:  表示普通索引,大多数情况下都可以使用  Unique:  约束唯一标识数据库表中的每一条记录,即在单表中不能用每条记录是唯一的(例如身份证就是唯一的),...
  • pandas的dataframe行列索引方法与查询

    千次阅读 2020-09-14 20:09:47
    dataframe的行索引方法有三种,分别为loc,iloc,ix loc loc是基于行索引,或者说是行的名称进行索引的 iloc iloc是根据行的序列数索引的,序列数从0开始取,iloc前面的i就好像是在提醒你,他的输入参数是常数。 ix ...
  • mysql索引详解

    万次阅读 多人点赞 2021-07-07 21:40:09
    分别为:表定义文件、数据文件、索引文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。 InnoDB:所有的表都...
  • MATLAB中矩阵的逻辑索引方法

    千次阅读 2019-05-27 11:02:29
    MATLAB中对矩阵元素的索引,包括常用的下标法和巧妙的逻辑索引,逻辑索引是用逻辑0或1去判断对应位置的元素是否被选择,所以矩阵和逻辑阵维数必须一致;是不是可能有点不明白,贴个例子你就懂啦: >>A=[-1 1;...
  • LinkedList的索引方法

    千次阅读 2015-12-31 16:43:20
    package org.jhy.com; import java.util.Iterator; import java.util.LinkedList; public class LinkedListTest2 { public static void main(String[] args) { LinkedList ll = ...ll.addLa
  • mysql全文索引使用方法

    千次阅读 2016-08-11 15:06:33
    一、设置全文索引: 添加:ALTER TABLE table_name ADD FULLTEXT ( column); 删除:DROP INDEX index_name ON table_name; 注:mysql5.6版本以下只有myisam存储引擎支持全文索引,mysql5.6以上版本myisam和innodb...
  • mysql的索引方法btree和hash的区别

    万次阅读 2017-04-17 09:14:07
    mysql的索引方法btree和hash的区别
  • oracle中创建复合索引方法

    万次阅读 2014-03-30 13:34:55
    索引可以包含一个、两个或更多个列。两个或更多个列上的索引被称作复合索引。例如,以下语句创建一个具有两列的复合索引:  CREATE INDEX name  ON employee (emp_lname, emp_fname)  如果第一列 不...
  • SQL SERVER 强制指定使用索引方法

    万次阅读 2018-03-20 20:39:47
    在一些应用场景下,使用索引反而降低了查询效率。此时,希望能够通过一些方案自主控制什么时候使用索引,什么时候不使用索引。通过在网上查询相关资料,找到了一种使用 with语句的解决方案。具体介绍如下: ① 使用...
  • MySQL创建索引方法

    千次阅读 2019-08-10 00:12:02
    创建索引 如果是CHAR,VARCHAR类型,length可以小于字段实际长度 如果是BLOB和TEXT类型,必须指定 ...一、CREATE INDEX方法 CREATE INDEX <索引名> ON <表名> (<列名> [<长度>] [ ASC | ...
  • mysql判断索引存在时删除索引方法

    千次阅读 2013-02-21 14:09:27
    mysql的drop index语句不支持if exists条件,在sql中先删除索引,再创建索引,如果对于新建的数据库,库中没有该索引,就会报错,导致后面的sql不再执行。 因此需要使用存储过程来判断索引是否存在,如果存在则删除...
  • IntelliJ IDEA 缓存和索引的介绍及清理方法

    万次阅读 多人点赞 2017-03-21 12:04:07
    在博文“ 详述 IntelliJ IDEA 的使用界面 ”中,博主说过这样一句话“ 对于首次创建或打开的新项目,IntelliJ IDEA 都会创建项目索引,大型项目在创建索引的过程中可能会出现卡顿的现象,因此强烈建议在 IntelliJ ...
  • oracle表强制走索引方法

    万次阅读 2019-04-13 17:07:38
    在某些时候,即使查询条件有索引字段依然不走索引, 这种情况下可以采取添加/*+index(表别名索引名)*/ 的方式,让查询强制走索引。 没走索引的情况下,查了全表: 强制走索引IDX_LOGIN_LOG_1112_TIME后,...
  • 创建表字段索引方法 1、查询出所有的用户表 2、查询出用户所有表的索引 3、查询用户表的索引(非聚集索引): 4、查询用户表的主键(聚集索引): 5、查询表的索引 6、查询表的主键 7、查找表的唯一性约束(包括...
  • 索引

    千次阅读 2019-07-10 18:14:31
    答: 建索引 索引是什么? 索引是一种优化查询的数据数据结构 索引为什么快? 使用B+tree的数据结构,能够快速筛选出需要的记录,避免全表扫描 为什么B+Tree快? 1 ,B+Tree拥有B-Tree的优点,深度浅,数据块大 2 ,...
  • MYSQL 唯一索引UNIQUE使用方法详解

    万次阅读 2018-07-23 23:51:27
    创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现重复(在插入数据的时候,如果唯一索引的插入值重复,所以插入就会报错),索引可以...创建唯一索的方法 操作表  代码如下 复制代码 ...
  • Python dataframe 行 元素 索引方法

    千次阅读 2018-08-28 01:26:41
    在dataframe中根据一定的条件,得到符合要求的某行元素所在的位置。 代码如下所示: df = pd.DataFrame({'BoolCol': [1, 2, 3, 3, 4],'attr': [22, 33, 22, 44, 66]}, index=[10,20,30,40,50]) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,293,920
精华内容 517,568
关键字:

做索引方法