摘要: 整数类型 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT 分别使用8,16,24,32,64位存储空间,值得范围 2的(N 1)方到2的(N 1)方 1。根据需要存储的范围大小,选择最小的数据类型。根据实际情况,选择使用UNSIGNED属性。 数据类型只决定怎么保存数据, 阅读全文
posted @ 2016-12-09 10:56 wuxiwei 阅读(468) 评论(0) 推荐(0) 编辑
摘要: LOCK TABLES对事务不安全,并且在试图锁定表之前隐式提交任何活动事务。 UNLOCK TABLES只有在LOCK TABLES已经获取到表锁时,会隐式提交任何活动事务。对于下面的一组语句,UNLOCK TABLES释放了全局读锁,但是因为没有表锁,不会提交事务。 开始一个事务(例如,STAR 阅读全文
posted @ 2016-12-07 22:59 wuxiwei 阅读(1234) 评论(0) 推荐(0) 编辑
摘要: 索引概念 B+树索引分为聚集索引和非聚集索引(辅助索引),但是两者的数据结构都和B+树一样,区别是存放的内容。 可以说数据库必须有索引,没有索引则检索过程变成了顺序查找,O(n)的时间复杂度几乎是不能忍受的。我们非常容易想象出一个只有单关键字组成的表如何使用B+树进行索引,只要将关键字存储到树的节点 阅读全文
posted @ 2016-12-04 16:47 wuxiwei 阅读(830) 评论(0) 推荐(1) 编辑
摘要: 事务是访问并更新数据库中各种数据项的一个程序执行单元。在事务中的操作,要么都执行修改,要么都不执行,这就是事务的目的,也是事务模型区别于文件系统的重要特征之一。 严格上来说,事务必须同时满足4个特性,即通常所说事务的ACID特性。虽然理论上定义了严格的事务要求,但是数据库厂商出于各种目的并没有严格满 阅读全文
posted @ 2016-12-03 13:41 wuxiwei 阅读(5934) 评论(0) 推荐(0) 编辑
摘要: 联接算法是MySql数据库用于处理联接的物理策略。在MySql 5.5版本仅支持Nested Loops Join算法,如果联接表上有索引时,Nested Loops Join是非常高效的算法。如果有索引时间复杂度为O(N),若没有索引,则可视为最坏的情况,时间复杂度为O(N²)。MySql根据不同 阅读全文
posted @ 2016-11-30 10:25 wuxiwei 阅读(1986) 评论(0) 推荐(0) 编辑
摘要: IN为什么慢? 在应用程序中使用子查询后,SQL语句的查询性能变得非常糟糕。例如: 独立子查询返回了符合条件的driver_id,这个问题是解决了,但是所用的时间需要6秒,可以通过EXPLAIN查看SQL语句的执行计划: 可以看到上面的SQL语句变成了相关子查询,通过EXPLAIN EXTENDED 阅读全文
posted @ 2016-11-26 23:18 wuxiwei 阅读(113709) 评论(5) 推荐(13) 编辑