MYSQL基础一

MYSQL

数据类型

tinyint、smailint、mediumint、int、bigint

无符号unsigned

长度可以指定,如int(4),并不会限制int的取值范围,只是影响显示字符的个数。如-0

floatdoubledecimal

decimal可存储比bigint还大的整数,可用于存储精确的小数。

floatdouble支持使用标准的浮点进行近似计算。

varcharchartextblog

varchar存储可变长字符,比char更节省空间(某些环境下),使用1-2个字节来记录字符串的长度,低于使用1个字节。超出指定的长度会被截断。

char定长,适合存储很短的字符串,或者都接近一个长度的,比如hash后的密码,超过指定长度也会被截断。

对于经常变更的数据,使用char不易产生碎片,非常短的列char在空间上效率更高。

避免使用blog/text,查询会使用临时表,性能开销严重。

使用枚举提高性能,ENUM内部存储的是枚举的索引,更小。

时间推荐使用timestamp,比datetime空间效率高。对于微秒可以使用bigint存储,对于小数点可以先扩大10万倍存储,取出时再换算回来。

列属性

auto_increment,default,notnull,zerofill

表引擎

引擎:myisam、innodb、csv、memory

MYISAMINNODB区别

innodb支持事务,表级锁并发更高,共享表空间(数据表存放在同一个文件中,可通过配置分开),支持外键,可以实现热备份,支持崩溃后的安全恢复。

myisam支持全文索引,表数据跟结构存放在不同的文件中MYD和MYI,不支持事务,表及锁。不支持崩溃后的安全恢复。设计简单,数据小并且主要以查询为主时性能很好。

共享锁:读锁,不堵塞,多个用户可以同时读取一个资源,互不干扰

排他锁:写锁,只允许一个用户进行写入

锁粒度:表锁系统性能开销小(myisam)。行锁支持并发高,开销大(innodb)

事务

服务层不管理事务由引擎实现(innodb),在同一个事务中,不推荐使用多种存储引擎

在不支持事务的引擎(myisam)上进行事务操作,不会报错,也不会有效果。

存储过程

保存一条或多条mysql语句的集合,类似编程中的方法。可以对某项业务进行单独的流程管理。

触发器

也是一种存储过程,可通过触发器级联更改表(更改一张表,关联的表也进行更改)。实现检测表中某个字符按的更改而作出处理。

索引

类似书的目录,先去查找索引,避免对大量数据进行全表的查询,进而提高查询速度。帮助服务器避免排序和临时表。将随机I/O变顺序I/O。降低了写的速度,占用了磁盘空间。--空间换时间

使用场景

小表:全表扫描效率更高。

中到大型表:索引十分有效

特大型表:使用索引的代价更大,使用分区来解决。

索引的类型

普通索引:没有约束限制

唯一索引:唯一性约束,不能重复

主键索引:特殊的唯一索引,不允许有空值

组合索引:将多个字段组合在一起创建索引。

外键索引:innodb引擎才有,保证数据的一致性、完整性、和实现级联操作。

全文索引:myisam引擎才有,只能对英文进行全文索引,可以使用第三方的全文索引进行代替,如es

一个表只能由一个主键索引,可以有多个唯一索引。主键索引一定是唯一索引,唯一索引不是主键索引。

主键索引可以与外键构成参照完整性约束,防止数据不一致。

索引创建原则

where子句中的字段,连接子句中的字段

索引列的基数越大,效果越好

对字符串进行索引,制定一个前缀长度,可以节省大量的索引空间

根据情况创建复合索引

避免创建太多索引,会占用磁盘空间,降低写效率

主键选择较短的数据类型,如整形。可减少索引的磁盘占用,提高查询效率

索引注意事项

复合索引遵循前缀原则

key(a,b,c)如果要使用b字段的索引,必须查询a和b,同理,如果要使用c索引,必须查询a和b和c。前缀的索引必须要用到

wherea=1andb=1#okwherea=1andb=1andc=1#okwherea=1#okwhereb=1#nowhereb=1andc=1#no

并不是创建了多个索引,只是一个索引。

like查询,%不能在前,可以使用全文索引

wherenamelike"%wang%"#no

判断字段是否是null可以使用索引

如果mysql估计使用索引比全表扫描慢,会放弃使用索引

如果or前的条件的列有索引,后面的没有,则索引全到不会用到

列类型是字符串,查询时要给值加字符串,否则索引失效

#namevarchar(16)""wherename=#no预览时标签不可点收录于话题#个上一篇下一篇


转载请注明:http://www.kelongbinga.com/klff/7017.html

  • 上一篇文章:
  •   
  • 下一篇文章: