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;

mysql手记,布布扣,bubuko.com

时间: 2024-10-11 07:42:14

mysql手记的相关文章

【Lamp】 Linux 下安装PHP+Apache+Mysql 手记

[0]写在最前 由于准备实习原因,今天又重温了Lamp的搭建过程,之前一直是看燕十八老师2012年的教程学习,因此今天也是拿了十八哥的lamp搭建笔记作参考.但这次按照笔记重新搭建,发现了很多问题,由于该笔记已时隔多年,部分软件已经更新几代,网上也少有部分问题的解决方法,因此趁刚搭建好lamp环境,于此整理一下步骤. [0.1]本人操作环境 ubuntu 15.04 软件存放路径 /root/lamp_need/ 安装路径 /usr/local/ [0.2]软件准备 zlib-1.2.7.tar

linux下安装mysql手记

安装mysql 下载mysql-standard-4.1.8-pc-linux-i686.tar.gz文件到目录/usr/local/下 # groupadd mysql   //添加mysql用户组 # useradd -g mysql mysql  //在mysql用户到mysql用户组 # tar –zxvf mysql-standard-4.1.8-pc-linux-i686.tar.gz  //解压安装包 # rm –f mysql-standard-4.1.8-pc-linux-i6

Centos 6.5 安装Jdk + tomcat-apache + Mysql 手记

#安装JDK 1.查看系统是否安装JDK,并卸载 rpm -qa | grep java tzdata-java-2013g-1.el6.noarch java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64 java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64 2.删除软件包 rpm -e --nodeps  tzdata-java-2013g-1.el6.noarch rpm -e --nodeps java-

我的MySQL使用手记

我的MySQL使用手记 近期在windows下使用MySQL,简单的记录下开发中遇到的一些问题 1. char,varchar和text的区别 char(M) varchar(M) text 定长 变长 变长 M个字节,0 <=M<= 255 L+1个字节,其中L<=M且0 <=M<= 65535 L+2个字节,其中L< 216 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节 对每个英文(ASCII)字符都占用2个字节,对一个汉字也只占用两个字节 储存不区

linux操作mysql命令快速手记——让手指跟上思考的速度(二)

这一篇是<mysql内建命令快速手记>的姐妹篇,废话不再赘述,直接上干货,跟老铁慢慢品 1.mysql -hlocalhost -uroot -proot,-h,-u,-p分别代表ip,username,password,老生常谈的命令,连接mysql 2.systemctl start mysqld.service 启动mysql服务的命令,注意看走眼了,是mysqld,d是demon的意思,守护 3.systemctl status mysqld.service 查看mysql服务状态的命

《PHP, MySQL, Javascript和CSS》读书随手记----MySQL篇

一 基础 要求结尾分号 如果在命令输入期间想要终止其运行,不要Ctrl-C. 要输入\c,并按回车键. sql命令和关键字不区分大小写. 表名在windows中不区分大小写,但是在linux和os x中区分 二 sql语言 创建一个数据库 CREATE DATABASE publication 创建用户 GRANT PRIVILEGES ON database.object TO 'username'@'hostname' IDENTIFIED BY 'password' 添加自增型ID列 AL

python控制mysql的API手记

--------------------python控制mysql的API--------------------#import MySQLdb:引用对应的开发包#conn=MySQLdb.connect (host='localhost',user='root',passwd='root',db='test',port=3306):创建数据 库连接#cur=conn.cursor():创建游标 #cur.execute(self, query, args):执行单条sql语句,接收的参数为sq

MySQL ODBC 访问编码问题手记

在 VB6 这样的老编程软件中通过 ODBC 访问 MySQL 数据库,不管服务器上数据库用的 UTF8 或者 GBK,测试发现客户端必须设置为gbk才能正常显示汉字: 如果数据字段中可能含有其他语种,则需要做以下设置: 1.服务器端数据表需要用 uft8 编码,才能容纳其他语种文字: 2.客户端用 MySQL ODBC 的 Unicode 版本驱动,ANSI 版本仅能显示中文简繁体,无法显示其他语种文字: 测试结果如下: 图为使用 VB6 的 adodc 控件及 datagrid 控件.

Mysql数据库简介手记

 前记    Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一.MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性. 正文:    1. MySQL的特点: Mysql是开