一、索引是什么?

比如我们要在字典中找某一字,如何才能快速找到呢?那就是通过字典的目录。

对数据库来说,索引的作用就是给‘数据’加目录。  

二、索引算法

设有N条随机记录,不用索引,平均查找N/2次,那么用了索引之后呢?

tree(二叉树)索引    log2N

hash(哈希)索引  1

三、优缺点

优点:加快了查询的速度(select)

缺点:降低了增删改的速度(update/delete/insert)

增加了表的文件大小(索引文件甚至可能比数据文件还大)

四、索引的使用原则

不过得使用索引;

索引条件列(where后面最频繁的条件比较适宜索引)

索引散列值,过于集中的值不要索引

例如:给性别列 ’男‘,’女‘加索引,意义不大

五、索引类型

1.普通索引:仅仅是加快了查询速度

2.唯一索引:行上的值不能重复

3.主键索引:不能重复

主键索引和唯一索引的区别:主键必唯一,但是唯一索引不一定是主键;

一张表上只能有一个主键,但是可以有一个或多个唯一索引

4.全文索引:fulltext index

六、查看某张表上的所有索引

show index from tableName [\G,如果是在cmd窗口,可以换行];

七、建立索引

alter table 表名 add index/unique/fulltext [索引名](列名) ;  ---索引名可不写,不写默认使用列名

alter table 表名 add primary key(列名)    --不要加索引名,因为主键只有一个

八、删除索引

删除非主键索引

alter table 表名 drop index 索引名;

删除主键索引:

alter table 表名 drop primary key;

九、案例

设有一张新闻表 15列,10列上有索引,共500w行数据,如何快速导入?

1.把空表的索引全部删除

2.导入数据

3.数据导入完毕后,集中建索引

十、全文索引与停止词

全文索引的用法:

match(全文索引名) against('keyword');

select * from 表 where match(全文索引名) against('keyword');

select id,match(全文索引名) against('keyword') from 表;//查看匹配度值

关于全文索引的停止词:

全文索引不针对非常频繁的词做索引

如:this,is,you,my等等

全文索引在mysql的默认情况下,对于中文意义不大。

因为英文有空格,标点符号来拆成单词,进而对单词进行索引;

而对于中文,没有空格来隔开单词,mysql无法识别每个中文词。

可以使用sphinx插件来进行全文索引的中文索引。

mysql之索引的更多相关文章

  1. 【夯实Mysql基础】MySQL性能优化的21个最佳实践 和 mysql使用索引

    本文地址 分享提纲: 1.为查询缓存优化你的查询 2. EXPLAIN 你的 SELECT 查询 3. 当只要一行数据时使用 LIMIT 1 4. 为搜索字段建索引 5. 在Join表的时候使用相当类 ...

  2. MySQL中索引和优化的用法总结

    1.什么是数据库中的索引?索引有什么作用? 引入索引的目的是为了加快查询速度.如果数据量很大,大的查询要从硬盘加载数据到内存当中. 2.InnoDB中的索引原理是怎么样的? InnoDB是Mysql的 ...

  3. MySQL 联合索引详解

    MySQL 联合索引详解   联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c ...

  4. Mysql复合索引

    当Mysql使用索引字段作为条件时,如果该索引是复合索引,必须使用该索引中的第一个字段作为条件才能保证系统使用该索引,否则该索引不会被使用,并且应尽可能地让索引顺序和字段顺序一致

  5. 如何正确建立MYSQL数据库索引

    索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...

  6. mysql高性能索引策略

    转载说明:http://www.nyankosama.com/2014/12/19/high-performance-index/ 1. 引言 随着互联网时代地到来,各种各样的基于互联网的应用和服务进 ...

  7. MySQL创建索引语法

    1.介绍: 所有mysql索引列类型都可以被索引,对来相关类使用索引可以提高select查询性能,根据mysql索引数,可以是最大索引与最小索引,每种存储引擎对每个表的至少支持16的索引.总索引长度为 ...

  8. mysql使用索引优化查询效率

    索引的概念 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度.在没 ...

  9. Mysql中索引的 创建,查看,删除,修改

    创建索引 MySQL创建索引的语法如下: ? 1 2 3 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON ...

  10. mysql 联合索引(转)

    http://blog.csdn.net/lmh12506/article/details/8879916 mysql 联合索引详解 联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中 ...

随机推荐

  1. Android 通过广播启动另一个应用的Activity

    需求:现在有应用A和应用B,我需要在A应用中启动B应用中的某个Activity 实现:A应用中的Activity发送广播,关键代码如下: String broadcastIntent = " ...

  2. win7打开或关闭windows功能 提示“出现错误,并非所有的功能被更改”,管理员权限惹的祸

    2013-07-25 18:12:06 最近要用到windows的telnet功能,本来是很简单的事情,因为管理员权限的问题,花了不少时间,才发现是管理员权限惹的祸,更滑稽的是,自己一直以来都不是管理 ...

  3. Upload/download/UrlConnection/URL

    文件上传的核心点 1:用<input type=”file”/> 来声明一个文件域.File:_____ <浏览>. 2:必须要使用post方式的表单. 3:必须设置表单的类型 ...

  4. Android开发之ContentProvider的简单使用

    ContentProvider,内容提供者 官网结构图: 作为四大组件之一的ContentProvider,主要是用于应用间数据共享使用的. ContentProvider把应用的数据封装起来,然后提 ...

  5. Spring data rest 如何显示主键

    How to expose the resourceId with Spring-Data-Rest? Spring-Data-Rest is a quite new project in the S ...

  6. LeetCode Lowest Common Ancestor of a Binary Search Tree (LCA最近公共祖先)

    题意: 给一棵二叉排序树,找p和q的LCA. 思路: 给的是BST(无相同节点),那么每个节点肯定大于左子树中的最大,小于右子树种的最小.根据这个特性,找LCA就简单多了. 分三种情况: (1)p和q ...

  7. (七)学习MVC之CodeFirst迁移更新数据库

    1.首先在程序包管理控制台输入:enable-migrations -force ,然后回车: 问题1: The EntityFramework package is not installed on ...

  8. expunge

    expunge 擦掉: 除去: 删去: 消除 1. The experience was something he had tried to expunge from his memory. 他曾努力 ...

  9. order by优化--Order By实现原理分析和Filesort优化

    在MySQL中的ORDER BY有两种排序实现方式: 1.利用有序索引获取有序数据 2.文件排序 在使用explain分析查询的时候,利用有序索引获取有序数据显示Using index.而文件排序显示 ...

  10. Idiomatic Python手记一: average in FP way

    方法一: import operator def average(*args): return reduce(operator.add, args) / len(args) if args else ...