唯一的是什么?

1. 索引列(字段)的所有值都只能出现一次,即必须唯一

--------------------------------------------------------------------------------

主键索引与唯一索引的区别

1. 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。

2. 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。

3. 唯一性索引列允许空值,而主键列不允许为空值。

4. 主键列在创建时,已经默认为空值 ++    唯一索引了。

5. 一个表最多只能创建一个主键,但可以创建多个唯一索引。

6. 主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。

7. 主键可以被其他表引用为外键,而唯一索引不能。   ?

--------------------------------------------------------------------------------

复合索引

1. 用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引)。

2. 就是几个字段联合在一起组成一个索引.复合索引的创建方法与创建单一索引的方法完全一样。

3. 但复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引。

4. 当表的行数远远大于索引键的数目时,使用这种方式可以明显加快表的查询速度。

--------------------------------------------------------------------------------

(abc) (ab) (ac)(bc)(a) (b) (c)

1. 复合索引又叫联合索引。

2. abc    ab    a     ac  可以

3. 对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。

4. 例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 ,当最左侧字段是常量引用时,索引就十分有效。

--------------------------------------------------------------------------------

除复合索引外,什么情况下索引被使用,什么情况下不会被使用

1. 建立索引的目的就是帮助查询,如果查寻用不到则索引就没有必要建立。

2. 如果表是经常需要更新的也不适合做索引 。频繁更新会导致索引也会频繁更新,降低写的效率。

3. 唯一性差的字段不适合创建索引。

4. 当给一个字段创建了索引的话,而这个字段要进行like模糊查询的话,那么这个值左边不可以有%,因为索引查询是要从左到右的,你如果给它加上%后,左边的值不是确定的话,它会找不到这个索引。所以在使用like模糊查询的时候,值得左边不可以有%。

5. order by  不会使用索引

6. or 当前后2个字段都有索引时才可以索引出来 否则不可以。

7. 如果数据表过大(5w以上)则有些字段(字符型长度超过(40))不适合作为索引。查询大量数据时,索引有效,但是慢

8. 不使用索引的原因:因为索引时会先过一遍索引在过一遍数据

--------------------------------------------------------------------------------

全文检索:

1. 全文检索就是FULLTEXT,用于 MyISAM 表,在列类型为 CHAR、VARCHAR 或 TEXT 列上创建。

2. 将数据装载到一个没有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE (或 CREATE INDEX) 创建索引,这将是非常快的。

3. 将数据装载到一个已经有 FULLTEXT 索引的表中,将是非常慢的。

4. MySQL自带的全文索引只能对英文进行全文检索。要检索中文用sphinx。

5. 创建全文检索:alter table 表名 add fulltext index 索引名(列名,[列名],[列名]..(可以有多个,可以有一个)

6. 在创建表的时候建全文检索:CREATE TABLE article (

7.      id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,

8.      FULLTEXT (title, content) --在title和content列上创建全文索引

);

--------------------------------------------------------------------------------

场景

1. 当数据多且字段值有相同的值得时候用普通索引。

2. 当字段多且字段值没有重复的时候用唯一索引。

3. 当有多个字段名都经常被查询的话用复合索引。

4. 普通索引不支持空值,唯一索引支持空值。

5. 但是,若是这张表增删改多而查询较少的话,就不要创建索引了,因为如果你给一列创建了索引,那么对该列进行增删改的时候,都会先访问这一列的索引,

6. 若是增,则在这一列的索引内以新填入的这个字段名的值为名创建索引的子集,

7. 若是改,则会把原来的删掉,再添入一个以这个字段名的新值为名创建索引的子集,

8. 若是删,则会把索引中以这个字段为名的索引的子集删掉。

9. 所以,会对增删改的执行减缓速度,

10. 所以,若是这张表增删改多而查询较少的话,就不要创建索引了。

11. 更新太频繁地字段不适合创建索引。

12. 不会出现在where条件中的字段不该建立索引。

--------------------------------------------------------------------------------

索引创建

CREATE [UNIQUE|CLUSTERED] INDEX INDEX_NAME ON TABLE_NAME(PROPERTY_NAME);

其中UNIQUE和CLUSTERED为可选项,分别是建立唯一索引和聚簇索引,具体解释为:

UNIQUE:表示此索引的每一个索引值只对应唯一的数据。

CLUSTERED:表示要建立的索引时聚簇索引,即索引项的顺序与表中记录的物理顺序一致的索引组织

ALTER TABLE table_name ADD INDEX index_name (column_list)

mysql索引的应用场景以及如何使用的更多相关文章

  1. 3、MySQL 索引失效的场景

    索引失效的场景: 1.没有 where 条件 直接看 SQL 语句   2.where 条件中所在的列没有建立索引 show index from t;   3.从表中取得数据超过某个阈值.通常认为是 ...

  2. MySQL索引语法+使用场景

    MySQL索引语法 建表时添加索引 建表同时建立单索引 CREATE TABLE t_user1(id INT , userName VARCHAR(20), PASSWORD VARCHAR(20) ...

  3. MySQL索引失效的场景

    WHERE字句的查询条件里有不等于号(WHERE column!=-),MYSQL将无法使用索引 类似地,如果WHERE字句的查询条件里使用了函数(如:WHERE DAY(column)=-),MYS ...

  4. mysql索引详细描述与应用场景

    索引的数据结构: (1)一般是B+tree:MySql使用最频繁的一个索引数据结构,数据结构以平衡树的形式来组织,因为是树型结构,所以更适合用来处理排序,范围查找等功能. (2)Hash:Hsah索引 ...

  5. MySQL索引失效的几种场景

    我们都知道建立索引能够提高查询效率,那么是不是任何情况下都能提高呢,当然不是的的,下面我们就来列举一些常见的索引失效的场景. 借用上一篇文章的dm_person_info表 在card_code列没加 ...

  6. MySQL索引的分类、结构、使用场景

    MySQL索引分类 1.主键索引:设定为主键后数据库会自动建立索引,innodb为聚簇索引 语法: 随表一起建索引: CREATE TABLE customer (id INT(10) UNSIGNE ...

  7. MySQL索引失效的常见场景

    当然请记住,explain是一个好习惯! MySQL索引失效的常见场景 在验证下面的场景时,请准备足够多的数据量,因为数据量少时,MySQL的优化器有时会判定全表扫描无伤大雅,就不会命中索引了. 1. ...

  8. MySQL索引原理及慢查询优化

    原文:http://tech.meituan.com/mysql-index.html 一个慢查询引发的思考 select count(*) from task where status=2 and ...

  9. (转)MySQL索引原理及慢查询优化

    转自美团技术博客,原文地址:http://tech.meituan.com/mysql-index.html 建索引的一些原则: 1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到 ...

随机推荐

  1. 【FZU2178】礼物分配

    题意 在双胞胎兄弟Eric与R.W的生日会上,他们共收到了N个礼物,生日过后他们决定分配这N个礼物(numv+numw=N).对于每个礼物他们俩有着各自心中的价值vi和wi,他们要求各自分到的礼物数目 ...

  2. 为单个项目添加多个远程仓库(Git操作)

    书写代码时,有时候需要维护多个仓库,这时候就面对了这个需求,解决方法如下: $ git remote add github ****** $ git remote add mayun ****** 书 ...

  3. 如何安装Zend Studio 以及汉化和基本准备工作

    昨天从早上一直弄到晚上10点,可累死我了,网上的资料都是掺次不齐,所以我写一篇系统点的文章来告诉大家怎么做. 1.如果你想进行一套PHP系统的开发,肯定是要有“尚方宝剑”的,这个尚方宝剑就是PHP工具 ...

  4. Pygame:编写一个小游戏 标签: pythonpygame游戏 2017-06-20 15:06 103人阅读 评论(0)

    大学最后的考试终于结束了,迎来了暑假和大四的漫长的"自由"假期.当然要自己好好"玩玩"了. 我最近在学习Python,本意是在机器学习深度学习上使用Python ...

  5. 633E Binary Table

    传送门 分析 我们发现n特别小,所以可以从这里入手 我们记录出所有列中某一种状态的列有多少个 我们再记录出每种列最少有多少个1(原来的1的个数和取反后的个数去最小值) 于是我们可以得出对于所有列异或一 ...

  6. select下拉列表

    1.写 <!DOCTYPE html> <html> <head> <title></title> <script language= ...

  7. jenkins+maven+svn实现简单的一键发布

    前言      在安装之前,我想说明一下本文的目的,jenkins的一款持续集成工具,      它可以做的事情很多,其中一个主要的功能就是简化部署流程          回想一下我们的发布流程:   ...

  8. OBD Problem Vehicles

    This page contains a list of vehicles that are known to be non-compliant with OBD-II in one way or a ...

  9. QT之Variant

    QVariant识别类型的注册 QVariant识别类型的注册 QVariant为一个万能的数据类型--可以作为许多类型互相之间进行自动转换.将C++变为弱数据类型成为可能--也是许多控件中用户定义数 ...

  10. UVa 1220 Party at Hali-Bula (树形DP,最大独立集)

    题意:公司有 n 个人形成一个树形结构,除了老板都有唯一的一个直系上司,要求选尽量多的人,但不能同时选一人上和他的直系上司,问最多能选多少人,并且是不是唯一的方案. 析:这个题几乎就是树的最大的独立集 ...