mysql创建索引

数据库的几个概念:主键,外键,索引,唯一索引

烈酒焚心 提交于 2019-12-24 05:57:33
主键: 主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从学生表中搜索一条纪录如查找一个人,就只能根据学号去查找,这才能找出唯一的一个,这就是主键;如:id int(10) not null primary key auto_increment ;自增长的类型 ; 外键: 定义数据表   假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息。用来保存整机产品信息的表叫做 Pc;用来保存配件供货信息的表叫做Parts。   在Pc表中有一个字段,用来描述这款电脑所使用的CPU型号;   在Parts 表中相应有一个字段,描述的正是CPU的型号,我们可以把它想成是全部CPU的型号列表。   很显然,这个厂家生产的电脑,其使用的CPU一定是供货信息表(parts)中存在的型号。这时,两个表中就存在一种约束关系(constraint)——Pc表中的CPU型号受到Parts 表中型号的约束。   首先我们来创建 parts 表: CREATE TABLE parts ( ... 字段定义 ..., model VARCHAR(20) NOT NULL, ... 字段定义 ... );   接下来是Pc表: CREATE TABLE pc ( ... 字段定义 ..., cpumodel VARCHAR(20) NOT NULL, ...

MySQL添加主键、索引

白昼怎懂夜的黑 提交于 2019-12-24 05:49:59
查看索引 SHOW INDEX FROM 数据库表名 比如:SHOW INDEX FROM order_info; 添加索引 alter table 数据库add index 索引名称(数据库字段名称) 主键索引 ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 比如: ALTER TABLE order_info ADD PRIMARY KEY (order_id); UNIQUE(唯一索引) ALTER TABLE `table_name` ADD UNIQUE (`column`) INDEX(普通索引) mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) FULLTEXT(全文索引) ALTER TABLE `table_name` ADD FULLTEXT ( `column` ) 删除索引 ALTER TABLE table_name DROP INDEX index_name DROP INDEX index_name ON talbe_name 多列索引 ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` ) 1.普通索引。

java高级面试题总结

青春壹個敷衍的年華 提交于 2019-12-24 05:10:44
目录 1、java基础 1.1、hashmap原理?扩容 1.2、arraylist原理?扩容 1.3、jdk1.8新特性? 1.4、completablefuture 2、数据库 2.1、mysql索引优化 2.2、创建索引的依据? 2.3、mysql执行计划,explain各项参数代表什么意思? 2.4、什么时候不会用到索引? 2.5、mysql存储引擎 2.6、数据库隔离级别 2.7、为什么要使用索引 3、java多线程 3.1、java并发包java.util.concurrent及其子包都包括什么? 3.2、synconsized和volatile关键字区别? 3.3、实现线程池的方式? 3.4、公平锁与非公平锁 3.5、为什么不适用Excutors来创建线程池 3.6、ReentraneLock & AQS 4、jvm、java内存模型 4.1、jvm内存模型? 4.2、jvm调优具体调的那些参数? 5、java框架(spring boot,sprint cloud) 5.1、mybatis一级缓存,二级缓存 5.2、mybatis $ # 区别? 5.3、sprint cloud 的常用组件? 6、中间件 6.1、redis存储的数据类型 6.2、redis实现分布式锁原理,使用redis实现分布式锁有什么问题? 6.3、zookeeper实现分布式锁原理 6.4

mysql基础学习二

帅比萌擦擦* 提交于 2019-12-24 04:00:39
视图 视图概念 视图是存储的查询语句,当调用的时候,产生结果集,视图充当的是虚拟表的角色。其实视图可以理解为一个表或多个表中导出来的表,作用和真实表一样,包含一系列带有行和列的数据 视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录,视图可以使用户操作方便,并保障数据库系统安全,如果原表改名或者删除则视图也失效。 视图操作 创建视图 语法结构: CREATE [ OR REPLACE ] VIEW [ view_name ] AS [ SELECT_STATEMENT ] ; 释义: CREATE VIEW : 创建视图 OR REPLACE : 可选,如果添加原来有同名视图的情况下会覆盖掉原有视图 view_name : 视图名称 SELECT_STATEMENT : SELECT 语句 e . g . create view c1 as select name , age from class_1 ; 视图表的增删改查操作 视图的增删改查操作与一般表的操作相同,使用insert update delete select即可,但是原数据表的约束条件仍然对视图产生作用。 删除视图 drop view [IF EXISTS] 视图名; IF EXISTS 表示如果存在,这样即使没有指定视图也不会报错。 drop view c1 ;

慢sql优化经验

吃可爱长大的小学妹 提交于 2019-12-23 23:52:18
mysql 项目 SELECT识别符。这是SELECT的查询序列号 select_type SELECT类型,可以为以下任何一种 : 1. SIMPLE:简单SELECT(不使用UNION或子查询) 2.PRIMARY:最外面的SELECT 3.UNION:UNION中的第二个或后面的SELECT语句 4.DEPENDENT UNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询 5.UNION RESULT:UNION 的结果 6.SUBQUERY:子查询中的第一个SELECT 7.DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询 8.DERIVED:导出表的SELECT(FROM子句的子查询) table 输出的行所引用的表 type 联接类型。下面给出各种联接类型,按照从最佳类型到最坏类型进行排序: 1、 system:表仅有一行(=系统表)。这是const联接类型的一个特例。 2、 const:表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次! 3、 eq_ref:对于每个来自于前面的表的行组合,从该表中读取一行。这可能是最好的联接类型,除了const类型。 4、 ref:对于每个来自于前面的表的行组合

Elastic Search

戏子无情 提交于 2019-12-23 18:57:37
Elastic Search 是一种分布式,高性能,高可用,可伸缩的搜索和分析系统 中文手册: 点击打开链接 1.为什么不能纯用数据库搜索? 如:执行select * from students where name like '%张三%' 数据库会一条一条的扫描 每条记录指定字段的文本可能很长,对这些文本一一扫描判断是否包含所需的关键字,效率很低 另外,包含“张小三“的结果搜索不出来 另外如果数据量很大,超过了一台机器的容量,此时就必须使用多台机器进行数据存储,我们自己实现的话很麻烦,ES运营而生: 自动维护数据分布到多个节点的索引的简历,还有搜索请求分布到多个节点的执行 自动维护数据的冗余副本,保证一些机器宕机了,也不会丢失任何数据 封装很多高级功能,让我们能快速开发应用和开发更加复杂的应用:复杂的搜索功能,聚合分析的功能,基于地理位置的搜索(例如距离我当前位置1公里以内的烤肉店) 2.大规模数据 当系统数据量达到十亿、百亿级别时引发的问题思考: 用什么数据库好(mysql、Oracle、sybase...) 如何解决单点故障(Zookeeper、MQ、 lvs(Linux Virtual Server)、F5、A10) 如何保证数据安全性(热备(数据库运行,采用archive log mode方式备份)、冷备(将数据库关闭之后备份,)、异地多活(不同城市 独立数据中心

Elasticsearch-索引别名

我的未来我决定 提交于 2019-12-23 05:19:57
简介 索引别名就是给一个或几个索引重新定义一个名字,操作索引别名时会转化为对真实索引的操作,定义索引别名时不可以与真实的索引同名 通俗解释:索引别名类似:windows的快捷方式,linux的软链接,mysql的视图 作用以及使用场景 索引别名允许我们执行以下操作: 实现在正在运行的集群上的一个索引和另一个索引之间透明切换 对多个索引进行分组组合(例如:过去3个月的索引logs2019010,logs201911, logs_201912组合起来,索引别名为logs) 在索引中的文档子集上创建“视图”(结合业务场景,会提升检索效率) 前提:Elasitcsearch创建索引后,索引名不允许修改。很多业务场景下单一索引可能无法满足要求 场景1:PB级别增量数据,借助rollover api实现,由基于日期的n个索引组成,对外提供服务使用别名会很便捷 场景2:线上提供服务的某个索引出了问题,使用索引别名实现无停机索引迁移 增加别名 给单个索引增加别名 PUT new_index POST / _aliases { "actions" : [ { "add" : { "index" : "new_index" , "alias" : "new_index_alias" } } ] } # 查看 GET new_index / _alias # 响应 { "new_index" : {

单列索引和联合索引的区别

巧了我就是萌 提交于 2019-12-23 04:09:47
一、联合索引测试 注:Mysql版本为 5.7.20 创建测试表(表记录数为60000): CREATE TABLE `t_mobilesms_11` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `userId` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT ' 用户id,创建任务时的userid', `mobile` varchar(24) NOT NULL DEFAULT '' COMMENT '手机号码', `billMonth` varchar(32) DEFAULT NULL COMMENT '账单月', `time` varchar(32) DEFAULT NULL COMMENT '收/发短信时间', `peerNumber` varchar(64) NOT NULL COMMENT '对方号码', `location` varchar(64) DEFAULT NULL COMMENT '通信地(自己的)', `createTime` datetime DEFAULT NULL COMMENT '创建时间', `lastModifyTime` datetime DEFAULT NULL COMMENT '最后修改时间',

mysql新特性

随声附和 提交于 2019-12-23 03:35:37
5.7新特性 sys库 document store X protocol json支持 空间数据 虚拟列 query rewrite plugin 表空间传输 innodb undo表空间 表空间管理及加密 在线ddl 多源复制 增强半同步 group replication 基于trace阅读执行计划 优化器 8.0新特性 消除了buffer pool mutex 数据字典全部采用innodb引擎存储,支持DDL原子性,crash safe,元数据管理更完善 快速在线加新列 并行redo log,并提升redo log的I/O性能,可在线调整redo log buffer 新增倒序索引,不可见索引 优化器增强,增强CBO特性 支持会话级别set var 动态调整部分参数 重构SQL分析器 行锁增加SKIP LOCKED 和 NOWAIT 选项 新增事务CATS特性 在线修改undo log 数量 直方图 认证插件由sha256改成caching_sha2 新增role功能 自增列持久化 增强json 增加redo/undo log加密 增加resource group功能 新增更多数据字典 默认字符集改成utf8mb4 通用表达式CTE 窗口函数 restart 功能 13期问题 1.mysql有哪些索引,有什么注意的   存储上分类:btree,hash,r-tree  

Solr实时创建增量或全量索引

有些话、适合烂在心里 提交于 2019-12-22 23:50:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1,为了支持增量建索引,我们需要把上述文中的mysql-data-config.xml内容改为 <dataConfig> <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/basic" user="root" password="123"/> <document> <entity name="article" transformer="HTMLStripTransformer" query="SELECT id, title, content FROM article" deltaImportQuery="SELECT id, title, content FROM article WHERE id='${dataimporter.delta.id}'" deltaQuery="SELECT id FROM article WHERE update_time > '${dataimporter.last_index_time}'"> <field column="id" name="id" /> <field column="title" name="title" /> <field column=