-
2018-08-10 09:48:45
上篇讲述了一下mysql索引的应用,本篇则主要针对索引命令进行一下总结,依旧拿employees为例说明。
首先要知道索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引。MyISAM和InnoDB存储引擎:只支持BTREE索引,也就是说默认使用BTREE,不能够更换。MEMORY/HEAP存储引擎:支持HASH和BTREE索引。主键索引、唯一索引:
主键和主键索引:
- 主键一定是唯一性索引,唯一性索引并不一定就是主键。主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。
- 一个表中可以有多个唯一性索引,但只能有一个主键。
- 主键列不允许空值,而唯一性索引列允许空值。
索引可以提高查询的速度。
创建主键索引:
//为emp_no创建主键索引 alter table employees add primary KEY(emp_no);
创建唯一索引:
//为test表中的seller_id字段添加唯一索引 alter table test add unique index(seller_id);
普通索引:
MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。
//为first_name创建唯一索引 alter table employees add index first_name (first_name);
联合索引:
又称复合索引;Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。
//为employees表中的birth_date, first_name, last_name创建联合索引 alter table employees add index bd_fn_ln (birth_date, first_name, last_name);
全文索引:
全文索引只能适用于MyISAM引擎,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引。全文索引其实就是根据某个关键字,全文搜索,比如有一个字段内容为“北京博物馆拍卖正在进行中……”,那么当输入“博物馆”几个关键字的时候,则会把该条记录搜索出来。
开篇我们提到了INNODB引擎是支持BTREE索引的,也为我们下篇讲述索引原理买下伏笔。
更多相关内容 -
MySQ索引操作命令总结(创建、重建、查询和删除索引命令详解)
2020-12-15 05:23:101、创建索引 索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引。以下命令语句分别展示了如何创建主键索引(PRIMARY KEY),联合索引(UNIQUE)和普通索引(INDEX)的... -
MySQL使用命令创建、删除、查询索引的介绍
2020-12-16 03:33:44本文主要是对如何使用命令操作MySQL索引,包括创建索引、重建索引、查询索引、删除索引的操作。以下所列示例中的 `table_name` 表示数据表名,`index_name` 表示索引名,column list 表示字段列表(如:`id`,`order_... -
Kibana ES创建索引命令
2021-03-24 13:55:46创建新索引 PUT 索引名 { "settings": { "index": { "number_of_shards": "3", "number_of_replicas": "0" } } } 设置索引mapping PUT 索引名/_doc/_mapping { "properties": { "id": { "type": "ke删除旧索引
DELETE 索引名
创建新索引
PUT 索引名 { "settings": { "index": { "number_of_shards": "3", "number_of_replicas": "0" } } }
设置索引mapping
PUT 索引名/_doc/_mapping { "properties": { "id": { "type": "keyword" }, "day": { "type": "integer" }, "count": { "type": "double" }, "level": { "type": "integer" } }
这里要注意,如果是用http方式创建的话,mapping需要带s:mappings。如下:
设置别名
POST _aliases { "actions" : [{"add" : {"index" : "索引名" , "alias" : "别名"}}] }
-
MySQL 创建与修改 索引(ALTER命令)
2021-12-30 23:52:14创建索引时,需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。 实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。 索引的缺点:虽然索引大大提高了查询速度,但是却...索引(index)分单列索引和组合索引。
单列索引,即一个索引只包含单个列,一个表可以有多个单列索引。
组合索引,即一个索引包含多个列。创建索引时,需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。索引的缺点:虽然索引大大提高了查询速度,但是却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。同时,建立索引会占用磁盘空间的索引文件。
一、创建与修改索引
创建索引:
CREATE INDEX indexName ON table_name (column_name)
如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。
修改表结构(添加索引)
ALTER table tableName ADD INDEX indexName(columnName)
创建表的时候直接指定
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );
删除索引
DROP INDEX [indexName] ON mytable;
二、ALTER 命令添加和删除索引
有四种方式来添加数据表的索引:
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list);
该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list);
该语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
ALTER TABLE tbl_name ADD INDEX index_name (column_list);
添加普通索引,索引值可出现多次。
ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list);
该语句指定了索引为 FULLTEXT ,用于全文索引。
以下实例为在表中添加索引:
ALTER TABLE testalter_tbl ADD INDEX (c);
还可以在 ALTER 命令中使用 DROP 子句来删除索引:
ALTER TABLE testalter_tbl DROP INDEX c;
三、ALTER 命令添加和删除主键
主键作用于列上(可以一个列或多个列联合主键),添加主键索引时,需要确保该主键默认不为空(NOT NULL)。实例如下:
ALTER TABLE testalter_tbl MODIFY i INT NOT NULL; ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);
也可以使用 ALTER 命令删除主键:
ALTER TABLE testalter_tbl DROP PRIMARY KEY;
删除主键时只需指定PRIMARY KEY,但在删除索引时,必须知道索引名。
四、显示索引信息
可以使用 SHOW INDEX 命令来列出表中的相关的索引信息。
可以通过添加 \G 来格式化输出信息。\G:将查询到的横向表格纵向输出,方便阅读。
SHOW INDEX FROM table_name\G
-
es索引命令
2020-03-21 10:36:17索引管理1.1创建索引1.2删除索引1.3获取索引1.4修改索引1.5打开或关闭索引2.索引映射管理2.1增加映射2.2获取映射3.索引别名3.1增加别名3.2删除别名3.3过滤索引别名4.索引配置4.1更新/新增索引配置4.2获取配置4.3索引...es常用命令
文章目录
1.索引管理
1.1创建索引
PUT /secisland { "settings": { "number_of_shards":3, "number_of_replicas":1 } }
1.2删除索引
DELETE /secisland/
1.3获取索引
GET /secisland/
#返回内容 { "secisland": { "aliases": {}, "mappings": {}, "settings": { "index": { "creation_date": "1584587482430", "number_of_shards": "3", "number_of_replicas": "1", "uuid": "949RnFG2S4aX_cN1m3grlA", "version": { "created": "5030099" }, "provided_name": "secisland" } } } }
由返回类容可以看出,索引还可以配置mappings、aliases属性。
1.4修改索引
PUT /secisland/_settings { #将副本分片数量修改为1 "number_of_replicas": 1 }
1.5打开或关闭索引
说明:关闭的索引只能够显示索引元数据,不能够进行读写操作。
语法
#关闭 POST /secisland/_close #打开 POST /secisland/_open
2.索引映射管理
2.1增加映射
添加索引名为secisland,文档类型log,字段message,字段类型字符串
PUT /secisland { "mappings": { "log":{ "properties": { "message":{ "type": "string" } } } } }
向已存在索引secisland增加新的字段映射 , 也可用于修改字段映射
PUT /secisland/_mapping/log { "properties": { "user_name":{ "type": "string" } } }
2.2获取映射
获取类型映射
GET /secisland/_mapping/log
获取字段映射
GET /secisland/_mapping/log/field/message
3.索引别名
说明:elasticsearch可以对一个或多个索引指定别名,通过别名可以查询到一个或多个索引内容。
3.1增加别名
POST /_aliases { "actions":[ { "add":{"index":"secisland","alias":"alias1"} } ] }
3.2删除别名
POST /_aliases { "actions":[ { "remove":{"index":"secisland","alias":"alias1"} } ] }
3.3过滤索引别名
通过过滤索引指定别名提供了对索引查看的不同视图。
POST _aliases { "actions": [ { "add": { "index": "test1","alias": "alias2", "filter": {"term": { "user": "kimchy" }} } } ] }
4.索引配置
4.1更新/新增索引配置
#新增分词器 PUT /secisland/_settings { "analysis": { "analyzer": { "content":{ "type":"custom", "tokenizer":"whitespace" } } } }
注意:添加分析器之前,必须先关闭索引,添加后再打开索引。
4.2获取配置
GET /secidland/_settings
4.3索引分析
索引分析:把文本拆分为一个单词,为倒排索引做准备
es中一个分析器(analyzes)由字符过滤器、分词器(tokenizer)以及标记过滤器组成。
测试分析器
POST /_analyze { "analyzer": "standard", "text": "this is a test" }
自定义分析器
POST /_analyze { "tokenizer": "keyword", "filter":["lowercase"], "char_filter": ["html_strip"], "text": "this is a <b> tTest </b>" }
5索引监控
5.1索引统计
获取指定索引的统计数据
GET /index1/_status
5.3索引分片信息
GET /secisland/_segments
5.4索引恢复
GET /secisland/_recovery
5.5索引分片存储信息
GET /secisland/_shard_stores
6状态管理
6.1索引刷新
刷新接口可以明确刷新一个或多个索引,使之前最后一次刷新之后的所有操作被执行。
POST /secisland/_refresh
6.2冲洗
冲洗(flush)接口可以通过接口冲洗一个或多个索引。索引主要通过执行冲洗将数据保存到索引存储并清除内部事务日志,以此来释放索引的内存空间。默认,es使用内存启发式算法来自动触发冲洗操作的请求来清理内存
POST /secisland/_flush
7.文档管理
文档类似于数据库中的一条记录,文档必须包含在一个索引中。
7.1增加文档
PUT /secisland/secilog/1 { "collect_type":"syslog", "collect_date":"2020-03-19" }
1.创建文档时,如果索引不存在,会自动创建索引,并自动映射每个字段类型。
2.创建文档时不指定ID,系统会自动创建一个不重复的随机数。
7.2更新文档内容
POST /secisland/secilog/1/_update { "doc":{ "collect_type":"systemlog" } }
7.3查询文档内容
GET /secisland/secilog/1
7.4多文档查询
POST /_megt { "docs":[ {"_index":"secisland","_type":"secilog","_id":"1"}, {"_index":"secisland","_type":"secilog","_id":"2"} ] }
7.5块操作
分成action、metadata和doc三部份
action : 必须是以下4种选项之一
index(最常用) : 如果文档不存在就创建他,如果文档存在就更新他
create : 如果文档不存在就创建他,但如果文档存在就返回错误使用时一定要在metadata设置_id值,他才能去判断这个文档是否存在
update : 更新一个文档,如果文档不存在就返回错误使用时也要给_id值,且后面文档的格式和其他人不一样
delete : 删除一个文档,如果要删除的文档id不存在,就返回错误使用时也必须在metadata中设置文档_id,且后面不能带一个doc,因为没意义,他是用_id去删除文档的.
metadata : 设置这个文档的metadata,像是_id、_index、_type…
doc : 就是一般的文档格式
POST /_bulk { "index" : { "_index" : "test", "_type" : "_doc", "_id" : "1" } } { "field1" : "value1" } { "delete" : { "_index" : "test", "_type" : "_doc", "_id" : "2" } } { "create" : { "_index" : "test", "_type" : "_doc", "_id" : "3" } } { "field1" : "value3" } { "update" : {"_index" : "test", "_type" : "_doc", "_id" : "1" } } { "doc" : {"field2" : "value2"} }
“test”, “_type” : “_doc”, “_id” : “1” } }
{ “field1” : “value1” }
{ “delete” : { “_index” : “test”, “_type” : “_doc”, “_id” : “2” } }
{ “create” : { “_index” : “test”, “_type” : “_doc”, “_id” : “3” } }
{ “field1” : “value3” }
{ “update” : {"_index" : “test”, “_type” : “_doc”, “_id” : “1” } }
{ “doc” : {“field2” : “value2”} }
-
创建索引、修改索引、删除索引的命令语句
2018-12-13 11:29:29索引命名规则 普通索引名:IDX_table_&lt;column&gt;_&lt;column&gt; 唯一索引名:UDX_table_&lt;column&gt;_&lt;column&gt; 其中&lt;... -
mysql中如何用命令创建联合索引
2021-11-05 10:33:06目录普通联合索引唯一联合索引普通联合索引和唯一联合索引的区别 普通联合索引 语法: create index 索引名称 on 表名(字段名称) 示例: create index firstIndex on student(id, name, address); 注意: 索引... -
VFP使用命令建立和操作索引文件
2021-02-04 23:30:12建立索引文件:对打开的索引文件,可用下列命令建立索引:格式:indexon索引关键字|tag索引名|to索引文件名说明:(1).tag索引名:指定索引名,此索引存放在与表名相同的.cdx文件中。(2).to索引文件名:选择此项生成独立... -
phoenix创建映射表和创建索引、删除索引、重建索引
2021-11-10 16:39:150.创建hbase映射表: 映射表一定要和hbase中表的字段一一对应,首先pk是主键,也可以用rowkey来表示,剩下的就是各个列,不要忘了用“列族”.“具体列”这样的形式表示。 create table "device_data_test08" (... -
关于MongoDB索引管理-索引的创建、查看、删除操作详解
2020-09-09 10:44:12本文讲述了关于MongoDB索引管理包括索引的创建、查看索引、删除索引各方面的命令及使用方法 -
MongoDB创建索引
2021-09-28 23:35:131: 指定按升序创建索引 -1: 按降序来创建索引 示例: db.col.createIndex({"title":1}) 创建复合索引: 设置使用多个字段创建索引(关系型数据库中称作复合索引) 示例: >db.test.createIndex({"title":1... -
sqlserver 命令 创建非聚集索引
2022-02-13 09:18:07sqlserver 命令 创建非聚集索引 -
mysql——创建索引、修改索引、删除索引的命令语句
2021-01-19 02:05:39查看表中已经存在 index:showindex from table_name;创建和删除索引索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或...(1)使用ALTER TABLE语句创建索引。语法如下:alter table table_name ... -
使用curl创建ES索引
2021-06-28 11:01:53curl -X PUT http://localhost:9200/baifan {"acknowledged":true,"shards_acknowledged":true,"index":"baifan"} -
MySQL索引篇,创建表时创建索引
2021-01-27 02:34:24索引对于MySQL数据库查询速度具有无可取代的作用,一个合适的索引能给数据查询的效率带来巨大的提升,本文来给大家讲讲如何创建索引,索引的最佳创建方式是在建表的时候就确定好要索引的字段并建立好索引。... -
MongoDB 后台创建索引、查看创建进度等
2021-02-07 16:23:29缺省情况下,当为一个集合创建索引时,这个操作将阻塞其他的所有操作。即该集合上的无法正常读写,直到索引创建完毕 任意基于所有数据库申请读或写锁都将等待直到前台完成索引创建操作 后台方式 将索引创建置于到... -
ES(ElasticSearch) 索引创建
2022-04-18 10:49:361、创建新的索引(index) PUT indexTest001 结果: 2、索引设置 ES 默认提供了好多索引配置选项,参考https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index-modules.html,这些配置选项都有经过... -
ES如何创建索引
2022-01-08 10:11:36创建索引 1、创建新的索引(index) PUT indexTest001 2、索引设置 ES 默认提供了好多索引配置选项,参考https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index-modules.html 修改索引设置参考:... -
VFP基础教程 2.8 使用命令建立和操作索引文件
2020-07-07 22:18:12建立索引文件:对打开的索引文件,可用下列命令建立索引: 格式:index on 索引关键字|tag 索引名|to 索引文件名 说明:(1).tag 索引名:指定索引名,此索引存放在与表名相同的。cdx文件中。 (2).to 索引... -
SQL创建索引、主键
2021-01-19 15:07:32-- MySQL中四种方式给字段添加索引1)# 添加主键# ALTER TABLE tbl_name ADD PRIMARY KEY (col_list);# -- // 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。#添加唯一索引-- UNIQUE 后面不用跟... -
创建聚集索引、非聚集索引、唯一索引、唯一键约束
2021-01-19 21:08:27分析表的索引建立情况:DBCC showcontig('Table')执行重建索引命令:DBCC DBREINDEX('T_CEmployeeRegisterHoliday')1、没有聚集索引查询2、有聚集索引查询3、没有非聚集索引查询4、有非聚集索引查询5、查询表索引... -
es创建索引(linux命令和head插件),配置ik
2019-09-02 11:59:04创建索引 curl -XPUT ‘localhost:9200/blog/’ 删除索引 curl -XDELETE ‘localhost:9200/blog/’ 添加映射关系(类似于数据库表结构) curl -XPUT ‘localhost:9200/blog/_mapping/blog’ -d ’ { "blog": { .... -
es索引的创建
2021-05-09 18:30:33es是一个分布式的文档数据库,索引的文档都是以json序列化形式存贮的,而不是像关系型数据库那样是列数据行的形式存贮的。 在es 7.0之前,常把es和关系型数据库的名词做如下映射 es mysql index (索引) ... -
elasticsearch创建索引和查看索引及结构命令
2019-08-20 16:54:16创建索引: 命令: PUT 索引名 示例: number_of_shards:分片数量(按机器节点数量计算,创建后不能更改) number_of_replicas:副本数量 PUT admin_log_0821 { "settings":{ "number_of_shards":6, ... -
mysql添加索引命令
2018-11-22 13:47:00创建脚本 1.PRIMARY KEY(主键索引)mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.UNIQUE(唯一索引)mysql>ALTER TABLE `table_name` ADD UNIQUE (`column` ) 3.... -
四、mongodb创建索引
2021-03-28 18:32:481、mongodb创建简单的索引方法 db.集合.ensureIndex({字段名:1}),1表示升序, -1表示降序 db.集合.createIndex({字段名:1}) 上面两个命令效果等价 2、索引的查看 默认情况下_id是集合的索引 查看方式:db.集合.... -
Elasticsearch 索引相关命令
2021-11-14 21:44:03查询索引信息 # 查索引简要信息,比如 索引状态, 索引名字uuid,分片副本数量,文档存储个数大小等 GET /_cat/indices/indexname?v curl -XGET "http://localhost:9200/_cat/indices/indexname?v" # 查看该索引详细... -
ES学习之curl命令操作索引
2021-10-29 18:56:48本篇文章相对ES学习,直接跳过了ES介绍来到如何用curl来操作包括,整个流程根据创建到使用查询。本篇文章使用的ES版本为6.8。...创建索引前先说明想要使用ES要知道ES的索引由哪几部分组成。索引in..