likes
comments
collection
share

SQL索引分类和建索引命令语句

作者站长头像
站长
· 阅读数 65

主键索引:索引值必须是唯一的,且不能为NULL

  • 第一种:CREATE TABLE table_name(id int PRIMARY KEY auto_increment,name varchar(10));
  • 第二种: ALTER TABLE table_name ADD PRIMARY KEY (columnName);

普通索引:索引值可出现多次

  • 第一种:CREATE INDEX index_name on table_name(columnName);
  • 第二种:ALTER TABLE table_name ADD INDEX index_name (columnName);

全文索引:主要是针对文本的检索,如:文章,全文索引只针对MyISAM引擎有效,并且只针对英文内容生效

  • 建表时创建

    #建表
    CREATE TABLE articles(
    	id INT UNSIGNED ATUO_INCREMENT NOT NULL PRIMARY KEY,
    	title VARCHAR(200),
    	body TEXT,
    	FULLTEXT(title,body)
    )engine=myisam charset utf8;	#指定存储引擎
    #使用
    select * from articles where match(title,body) against('英文内容'); #只针对英语内容生效
    
    #说明
    #1、在mysql中fultext索引只针对 myisam 生效
    #2、mysq1自己提供的flltext只针对英文生效->sphinx (coreseek)技术处理中文工
    #3、使用方法是match(字段名...) against(‘关键字')
    #4、全文索引一个叫停止词,因为在一个文本中创建索引是一个无穷大的数,因此对一些常用词和字符就不会创建,这些词称为停止词
    
  • ALTER TABLE table_name ADD FULLTEXT index_name (columnName);

唯一索引:索引列的值必须唯一,但允许有空值NULL,并可以有多个。

  • 第一种: CREATE UNIQUE INDEX index_name ON table_name(columnName);
  • 第二种:ALTER TABLE table_name ADD UNIQUE INDEX index_name ON (columnName);

单值索引:即一个索引只包含单个列,一个表可以有多个单列索引。

  • 第一种: CREATE INDEX index_name ON table_name(columnName);
  • 第二种:ALTER TABLE table_name ADD INDEX index_name ON (columnName);
select * from user where name='';
//经常查name字段,为其建索引
create index idx_user_name on user(name);

复合索引:即一个索引包含多个列

  • 第一种: CREATE INDEX index_name ON table_name(columnName1,columnName2...);
  • 第二种:ALTER TABLE table_name ADD INDEX index_name ON (columnName1,columnName2...);
select * from user where name='' and email='';
//经常查name和email字段,为其建索引
create index idx_user_name on user(name, email);

查询索引

  • 第一种:SHOW INDEX FROM table_name;
  • 第二种:SHOW KEYS FROM table_name;

删除索引

  • 第一种: DROP INDEX index_name ON table_name;
  • 第二种:ALTER TABLE table_name DROP INDEX index_name;
  • 删除主键索引:ALTER TBALE table_name DROP PRIMARY KEY;

查看索引的使用情况show status like 'Handler_ read%';

  • handler_ read_ key:这个值越高越好,越高表示使用索引查询到的次数。
  • handler_ read_ rnd_next:这 个值越高,说明查询低效。 SQL索引分类和建索引命令语句

修改索引通常是先删除再重新建

转载自:https://juejin.cn/post/7133189407506432036
评论
请登录