zoukankan      html  css  js  c++  java
  • MySQL创建索引

    一、索引类型

    • 普通索引
    • 唯一索引
    • 主键索引
    • 组合索引
    • 全文索引

    查询索引:show index from emp;

    二、普通索引

    是最基本的索引,它没有任何限制。
    在创建索引时,可以指定索引长度。length 为可选参数,表示索引的长度,只有字符串类型的字段才
    能指定索引长度,如果是BLOB和TEXT类型,必须指定length。
    创建索引时需要注意:如果指定单列索引长度,length 必须小于这个字段所允许的最大字符个数。

    create table emp1(id int,name varchar(30),salary float(8,2),address varchar(50),index emp1_id_index(id(20)));创建表添加索引
    
    create index emp_name_index on emp(last_name);创建索引
    
    alter table emp add index emp_salary_index(salary);添加索引
    
    drop index emp_name_index on emp;删除索引
    
    alter table emp drop index emp_index_i_n;删除索引

    三、唯一索引

    唯一索引与普通索引类似,不同的就是索引列的值必须唯一,但允许有空值。

    create table emp1(id int,name varchar(30),salary float(8,2),addrees varchar(50),unique emp1_name_index(name));创建表时添加索引
    
    create unique index emp_name_index on emp(last_name);创建索引
    
    alter table emp add unique emp_name_index(last_name); 添加索引

    四、主键索引

    主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建
    表的时候同时创建主键索引。当存在主键约束时,系统自动添加主键索引。

    alter table emp add primery key(id);创建主键约束即创建主键索引
    
    alter table emp drop primary key; 删除索引

    五、组合索引

    组合索引是指使用多个字段创建的索引,只有在查询条件中使用了创建索引时的第-一个
    字段,索引才会被使用(最左前缀原则)。

    就是最左优先。
    如:我们使用表中的name,address, salary 创建组合索引,那么想要组合索引生效,
    我们只能使用如下组合:
    name/ address/ salary
    name/ address
    name/
    如果使用addrees/salarv 或者是salarv 则索引不会牛效。

    create table emp1(id int,name varchar(30),salary float(8,2),addrees varchar(50),index emp_index_i_n(id,name));创建表时添加索引
    
    create index emp_index_n_s on emp(last_name,salary);创建索引
    
    alter table emp add index emp_index_i_n(emp_id,last_name); 添加索引
    
    alter table emp drop foreign key dept_id_fk; 删除约束
    alter table emp drop index dept_id_fk; 删除索引

    六、全文索引

    全文索引(FULLTEXT INDEX)主要用来查找文本中的关键字,而不是直接与索引中的值
    相比较。FULLTEXT索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where
    语句的参数匹配。FULLTEXT 索引配合match against操作使用,而不是一-般的where语句
    加like.
    全文索引可以从CHAR、VARCHAR或TEXT列中作为CREATE TABLE语句的- -部分
    被创建,或是随后使用ALTER TABLE添加。不过切记对于大容量的数据表,生成全文索
    引是一个非常消耗时间非常消耗硬盘空间的做法。

    create table emp1(id text,fulltext emp1_id_fulltext(id));创建表时添加索引
    
    create fulltext index emp_news_fullindex on emp(news);创建索引
    
    alter table emp add (news text,fulltext emp_news_fullindex(news)); 添加索引
    
    alter table emp drop index emp_news_fullindex; 删除索引
    drop index emp_news_fullindex on emp; 删除索引
    
    select * from emp8 where match(contr) against('hello');使用
    
    alter table emp8 add fulltext index emp8_contr_fulltext1(contr) with parser ngram;使用NGRAM分词
    
  • 相关阅读:
    Django and Djangorestframework
    安装socketio出现module 'importlib._bootstrap' has no attribute 'SourceFileLoader' 错误
    pycharm 里运行 django 工程 You must either define the environment variable DJANGO_SETTINGS_MODULE 错误
    linux 安装python3
    iOS 10.3下解决Fiddler代理抓包ssl证书信任问题
    Android 7.0 fiddler代理抓不到https请求的解决办法
    python base64 decode incorrect padding错误解决方法
    Fiddler做代理服务器时添加X-Forwarder-For转发真实客户端ip
    python安装pbkdf2 遇到错误TypeError: __call__() takes exactly 2 arguments (1 given)
    soapUI通过groovy脚本设置超时时间
  • 原文地址:https://www.cnblogs.com/baisha/p/15440918.html
Copyright © 2011-2022 走看看