mysql创建索引

MySQL

拈花ヽ惹草 提交于 2019-12-08 13:54:32
数据表的操作: 查看数据表: desc [表名] show table [表名] 修改数据表: 修改表名:alter table [旧表名] rename to [新表名]; 修改字段名:alter table [表名] change [旧字段名] [新字段名] [新字段名] 修改字段的数据类型:alter table [表名] modify [字段名] [数据类型] 添加字段:alter table [表名] add [新字段名] 数据类型(约束) 删除字段:alter table [表名] drop [字段名] 修改字段的排列位置:alter table [表名] modify [字段名1] [数据类型] first/after [字段名2] 删除数据表:drop table [表名] 添加数据: insert into 表名 values( ),( ),( ); 更新数据: updata 表名 set id=01,name=' ' where id=1; 删除数据: delete from 表名 where id<5; 表的约束: 主键约束: primary key:单字段约束,多字段约束 非空约束: ...not null 唯一约束: ...unique 默认约束: ...default 0 索引: 是为了高效率查找特定的数据,提高查询速度 删除索引: alter

Elasticsearch操作索引

最后都变了- 提交于 2019-12-08 09:48:32
目录 操作索引 1. 基本概念 2. 创建索引 2.1 语法 2.2查看索引设置 2.3.删除索引 2.4 映射配置 2.5 新增数据 2.6 修改数据 2.7 删除数据 3. 查询 3.1 基本查询 3.2.结果过滤 3.3 高级查询 3.4 过滤(filter) 3.5 排序 4. 聚合aggregations 4.1 基本概念 4.2 聚合为桶 4.3 桶内度量 4.4 桶内嵌套桶 4.5 划分桶的其它方式 操作索引 1. 基本概念 Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。 对比关系: 索引(indices)---------------------------------Databases 数据库 类型(type)----------------------------------Table 数据表 文档(Document)---------------------------Row 行 字段(Field)---------------------------Columns 列 详细说明: 概念 说明 索引库(indices) indices是index的复数,代表许多的索引, 类型(type) 类型是模拟mysql中的table概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,其数据格式不同

2019.12月份总结

佐手、 提交于 2019-12-08 07:17:21
关于数据库的index要重点总结一下,包括聚簇索引和非聚簇索引。本次没有总结好。 还有联合索引等。 聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据 非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行,myisam通过key_buffer把索引先缓存到内存中,当需要访问数据时(通过索引访问数据),在内存中直接搜索索引,然后通过索引找到磁盘相应数据,这也就是为什么索引不在key buffer命中时,速度慢的原因 关于锁 ThreadLocal 为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 ThreadLocal 的经典使用场景是数据库连接和 session 管理等。 3.说一下 synchronized 底层实现原理? synchronized 是由一对 monitorenter/monitorexit 指令实现的,monitor 对象是同步的基本实现单元。在 Java 6 之前,monitor 的实现完全是依靠操作系统内部的互斥锁,因为需要进行用户态到内核态的切换,所以同步操作是一个无差别的重量级操作,性能也很低。但在 Java 6 的时候,Java 虚拟机 对此进行了大刀阔斧地改进,提供了三种不同的 monitor 实现,也就是常说的三种不同的锁:偏向锁(Biased

MySQL数据库

大城市里の小女人 提交于 2019-12-08 05:13:25
MySQL数据库 预备知识: 0、 MySQL 数据怎么存储数据?怎么高数查询数据?怎么实现事务的ACID?实际使用涉及哪些数据结构和算法,MySQL和redis的区别是什么? 0、1数据库管理系统(DBMS-Database Management System)使用 数据引擎 进行 创建、查询、更新和删除数据 。一个数据库可以使用多个数据引擎以满足各种性能和实际需求。 0、1、1、 InnoDB引擎 创建一个表,在硬盘上会生成 .frm.idb 结尾的两个文件。索引和数据在以.db结尾的文件中。 InnoDB存储引擎在存储数据的时候,默认按照b+树形结构存储数据。如果以 主键 作为b+树结构的 数据项 则为 聚集索引 ! 0、1、2、 MyISAM存储引擎 创建一个表,在硬盘上生成以 . f rm.MYD.MYI 结尾的三个文件。frm结尾的是 表结构( 存什么字段什么类型 ) ,MYD结尾的是 数据文件 ,MYI结尾的就是 索引文件 ,所以索引也是存在硬盘上的。 0、1、3、 MEMORY存储引擎 ,将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问。 注:如果要提供提交、回滚、崩溃恢复能力的 事物安全(ACID兼容)能力 ,并要求实现并发控制, InnoDB 是一个好的选择;如果数据表主要用来 插入和查询记录 ,则 MyISAM引擎 能提供较高的处理效率;如果只是

Explain详解与索引最佳实践

喜欢而已 提交于 2019-12-07 20:33:28
使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈 下面是使用 explain 的例子: 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中) 使用的表 DROP TABLE IF EXISTS `actor`; CREATE TABLE `actor` ( `id` int(11) NOT NULL, `name` varchar(45) DEFAULT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `actor` (`id`, `name`, `update_time`) VALUES (1,'a','2017-12-22 15:27:18'), (2,'b','2017-12-22 15:27:18'), (3,'c','2017-12-22 15:27:18'); DROP TABLE IF EXISTS `film`; CREATE TABLE

索引-mysql

核能气质少年 提交于 2019-12-07 17:27:26
索引使用的注意事项(策略及优化) 并不是建立索引就能显著提高查询速度,在索引的使用过程中,存在一些使用细节和注意事项,因为稍不留心,就可能导致在查询过程中索引失效。 一下列举一些需要注意的事项: 1. 不要在列上使用函数 不要在列上使用函数,这将导致索引失效而进行全表扫描。 如: 1 select * from news where year(publish_time) < 2018 应改为: 1 select * from news where publish_time < '2018-01-01' 2. 不要在列上进行计算 不要在列上进行运算,这也将导致索引失效而进行全表扫描。 如: 1 select * from news where id / 100 = 1 应改为: 1 select * from news where id = 1 * 100 3. 尽量避免使用 != 或 not in或 <> 等否定操作符 应该尽量避免在 where 子句中使用 != 或 not in 或 <>操作符, 这些负向查询也会导致索引失效而进行全表扫描。 如: 1 select name from user where id not in (1,3,4); 应改为: 1 select name from user where id in (2,5,6); 4. 尽量避免使用 or 来连接条件

MYSQL面试必读

孤人 提交于 2019-12-07 16:03:36
Mysql 的存储引擎,myisam和innodb的区别。 答: 1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用。表锁,不会出现死锁,适合小数据,小并发。 2.innodb是支持事务的存储引擎,合于插入和更新操作比较多的应用,设计合理的话是行锁(最大区别就在锁的级别上),适合大数据,大并发。 数据表类型有哪些 答:MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等。 MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。 InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。 MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化? a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。 b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。 c. mysql库主从读写分离。 d. 找规律分表,减少单表中的数据量提高查询速度。 e。添加缓存机制,比如memcached,apc等。 f. 不经常改动的页面,生成静态页面。 g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE. 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?

MySQL大表优化方案

☆樱花仙子☆ 提交于 2019-12-07 15:07:34
当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在 千万级 以下,字符串为主的表在 五百万 以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量: 字段 尽量使用 TINYINT 、 SMALLINT 、 MEDIUM_INT 作为整数类型而非 INT ,如果非负则加上 UNSIGNED VARCHAR 的长度只分配真正需要的空间 使用枚举或整数代替字符串类型 尽量使用 TIMESTAMP 而非 DATETIME , 单表不要有太多字段,建议在20以内 避免使用NULL字段,很难查询优化且占用额外索引空间 用整型来存IP 索引 索引并不是越多越好,要根据查询有针对性的创建,考虑在 WHERE 和 ORDER BY 命令上涉及的列建立索引,可根据 EXPLAIN 来查看是否用了索引还是全表扫描 应尽量避免在 WHERE 子句中对字段进行 NULL 值判断,否则将导致引擎放弃使用索引而进行全表扫描 值分布很稀少的字段不适合建索引,例如"性别"这种只有两三个值的字段 字符字段只建前缀索引 字符字段最好不要做主键 不用外键,由程序保证约束 尽量不用 UNIQUE

《2019年小米春季上海 PHP 实习生招聘面试题》部分答案解析

南笙酒味 提交于 2019-12-07 15:05:33
1 丶 Nginx 怎么实现负载均衡 这个还是比较简单 1.轮询 这种是默认的策略,把每个请求按顺序逐一分配到不同的 server,如果 server 挂掉,能自动剔除。 2.最少连接 把请求分配到连接数最少的 server 3.权重 使用 weight 来指定 server 访问比率,weight 默认是 1。以下配置会是 server2 访问的比例是 server1 的两倍。 4.ip_hash 每个请求会按照访问 ip 的 hash 值分配,这样同一客户端连续的 Web 请求都会被分发到同一 server 进行处理,可以解决 session 的问题。如果 server 挂掉,能自动剔除。 ip_hash 可以和 weight 结合使用。 2 丶 Linux 常用的命令 这个就不多说了 3 丶微信小程序常用的组件 view 丶 text 丶 button 丶 navigator 丶 scroll-view...... 等等 4 丶 Nginx 怎么配置虚拟主机 恩 2333333 5 丶 TP5 和 Laravel 框架差异 恩 2333333 6 丶 TP5 和 Laravel 框架中的数据迁移 这个本社区就有文档的 7 丶 RBAC 模型的讲解 什么是 RBAC RBAC (基于角色的访问控制):英文名称 Rose base Access Controller

mySql搜索引擎

落爺英雄遲暮 提交于 2019-12-07 10:33:44
转载自 深入浅出mysql数据库 MySQL5.5以后默认使用 InnoDB 存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表。 若要修改默认引擎,可以修改配置文件中的default-storage-engine。可以通过:show variables like ‘default_storage_engine’;查看当前数据库到默认引擎。命令:show engines和show variables like ‘have%’可以列出当前数据库所支持到引擎。其中Value显示为disabled的记录表示数据库支持此引擎,而在数据库启动时被禁用。在MySQL5.1以后,INFORMATION_SCHEMA数据库中存在一个ENGINES的表,它提供的信息与show engines;语句完全一样,可以使用下面语句来查询哪些存储引擎支持事物处理:select engine from information_chema.engines where transactions = ‘yes’; 可以通过engine关键字在创建或修改数据库时指定所使用到引擎。 主要存储引擎:MyISAM、InnoDB、MEMORY和MERGE介绍: 在创建表到时候通过engine=…或type=…来指定所要使用到引擎。show table status from