索引:索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。
索引 index ,就像目录一样,比如一本书或者字典,如果你想快速找到某个字,你最快的方法是看目录然后翻到相应的页面,但是如果这本书很薄,只有一两页,这时候看不看目录没啥区别,反过来,如果mysql数据库量很小的时候,有没有索引也没什么区别。当然,如果非要问多少量,一般我的经验是一万,一张表如果超过万条记录,那么建立索引比不建立索引会有一个可观的效率提升(否则一般就是0.0000xx 秒和0.00xx秒的区别,一般没有提升效率的感觉,如果数据量过十万百万的话,可能是几秒几十秒和不到0.1秒的差距,差距非常大),可以自己弄测试数据测试。当然,哪怕数据量很小,建立索引也是ok的,这个养成习惯最好。
大概知道了什么是索引,那么索引还有分类即单列索引和组合索引。单列索引顾名思义就是一个字段的索引,比如建立表都会有个主键id,一般这个就具备索引的,可以把他当成索引。
这边侧重说下唯一性索引 ,这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一。这个很多地方都会用到,比如你建立一个人员信息表,表是自增的,但是你希望插入的人不重复(判断依据是身份证+手机号码)。那么如果你不建立唯一性索引,一般你就是插入前先判断一下数据库是否有idcard+mobile的数据,有就更新,没有就插入,比较繁琐。而如果是建立idcard+mobile的索引的话,你就可以直接 insertBatch(List) 了,不需要考虑是否有。
增加唯一索引 alter table user add unique index(idcard,mobile);
删除的话就是将add 换成 drop ,然后加上索引名称即可。