mysql手记
myisam innoDB是mysql经常使用的存储引擎
MyISAM不支持事务、也不支持外键。但其訪问速度快。对事务完整性没有要求。
InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。
可是比起MyISAM存储引擎,InnoDB写的处理效率差一些而且会占用很多其它的磁盘空间以保留数据和索引。
innodb的索引有两种。叫第一索引,以及第二索引。
有的也叫聚集索引与辅助索引。
当中聚集索引存放了表中的记录。查询的时候不须要回表扫描。同一时候索引项较大;辅助索引存放的位置信息,须要回表扫描,相对来说。I/0 次数会添加。
查询的时候最好可以从索引中取得数据。降低回表,相对来说离散的 I/0,
MYISAM 没有聚集索引。存放的记录的物理位置
OLTP (联机事务处理)故名思议主要强调事务,如(银行存款的改动,用户订单等)面向应用
OLAP (联机分析处理) 主要作为数据仓库。面向决策。分析等。
联接算法:
nested-loops join 主要思想是:从外表中拿出一个数据与内表的每一条数据比較,O(M*N) 。
当有索引时:内表仅仅须要比較索引的高度,近似于O(M*H)
Block nested--loops join 主要思想 是:改进 nested-loops join 外部表每次去一定的数据到缓冲区。比方10条,然后这10条记录在跟内部表的数据比較,降低内部表的扫描次数。
Hash join 仅仅能== 以及!=。不能部分比較(为何?,hash是对整个字符串hash) 主要思想是:将外部表的数据放到join buffer,然后hash,这一阶段
为build;probe阶段,从内表中取出数据hash,比較。
主要的測试:
create TABLE myorder
( id int not null auto_increment,
userid int not null ,
orderdate date,
comein int DEFAULT 0,
comeout int DEFAULT 0,
PRIMARY key (id)
);
INSERT into myorder VALUES("","11123940","2014-05-10","","50");
SELECT userid ,orderdate ,comein -comeout as rest
from myorder
GROUP BY userid ,orderdate;
create index myorderindex on myorder(id,userid);
explain SELECT userid ,orderdate ,comein -comeout as rest
from myorder
GROUP BY userid ,orderdate;
最新文章
- android 自定义控件——(五)按钮点击变色
- System.Data.SqlClient.SqlException: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL Network Interfaces, error: 26 - 定位指定的服务器/实例时出错)
- Date.prototype.format
- c语言1
- 爱上MVC~为CheckBoxFor和RadioButtonFor加个扩展方法吧(希望MVC5把这方法收纳——呵呵)
- go-martini 简单分析之一
- 同步、更新、下载Android Source & SDK from 国内镜像站
- 转: 带你玩转Visual Studio——带你理解多字节编码与Unicode码
- understanding Nhibernate Hilo
- 将java的class文件放到一个指定文件夹下
- Java下利用Jackson进行JSON解析和序列化
- Java学习-024-获取当前类名或方法名二三文
- Sqli-labs less 31
- UNIQUE NullAble
- Dynamics CRM 常用 JS 方法集合
- 由世纪互联运营的 Windows Azure 现已在中国正式发布
- 正确理解HTML,XHTML页面的头部doctype定义
- linux_UBUNTU 12.04 上使用 SQUID 架设HTTP正向代理服务器
- Mybatis3 快速入门
- Unix 的缺陷 - 王垠