mysql数据库基础
2018-11-19 本文已影响0人
Sharise_Mo佩珊
索引
索引-基数.png什么是索引
- 快速寻找那些具有特定值的记录,所有mysql索引都以B-树的形式保存。
- 如果没有索引,执行查询时mysql必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里的记录越多,这个操作的代价就越高
- 如果作为搜索条件的列上已经创建了索引,mysql无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍
创建unique索引的目的:避免数据出现重复
唯一索引可以有多个但索引列的值必须唯一,索引列的值允许有空值。
如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引时就应该使用关键字unique
索引基数:数据中所包含的不同值的数量。
eg:[1,2,3,4,5,1],则他的基数是5
(索引的基数/数据表行数)越大,工作效率越好
如果值出现的几率几乎相等【性别】,无论搜索哪个值都可能得到一半的数据行,那么索引的用处就不大。在这种情况最好根本不要用索引,因为查询优化器发现某个值出现在表的数据行中的百分比很高时,它一般会忽略索引直接进行全表扫描,惯用的百分比界线是30%
redis
redis:REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
redis安装.png
启动redis: redis-server.exe redis.windows.conf
Redis::hset($key, 'id', $id); // 如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。
Redis::hgetall('id'); //以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。
Redis::hget('id'); // 返回哈希表 key 中给定域 field 的值