本文共 2272 字,大约阅读时间需要 7 分钟。
shwo engines;
用于查看你的 mysql 提供了什么存储引擎:show variables like '%storage_engine%'
查看当前 mysql 默认的存储引擎:对比项 | MyISAM | InnoDB |
---|---|---|
主外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行表锁 | 表锁,即使操作一条记录也会锁住整个表,不适合高并发操作 | 行锁,操作时只锁住某一行,不对其他行有影响,适合高并发的操作 |
缓存 | 只缓存索引,不缓存真实数据 | 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能起到决定性的影响 |
表空间 | 小 | 大 |
关注点 | 性能 | 事务 |
默认安装 | Y | Y |
FROMON JOIN WHERE GROUP BY HAVING SELECTDISTINCT ORDER BY LIMIT
select * from Table A INNER JOIN Table B ON A.Key=B.key;
select * from Table A LEFT JOIN Table B ON A.Key=B.key;
select * from Table A LEFT JOIN Table B ON A.Key=B.key WHERE B.Key IS NULL;
select * from Table A RIGHT JOIN Table B ON A.Key=B.Key
select * from Table A RIGHT JOIN Table B ON A.Key=B.Key WHERE A.Key IS NULL;
select * from Table A left join Table B ON A.Key=B.Key union select * from Table A right join Table B ON A.Key=B.Key
select * from Table A left join Table B ON A.Key=B.Key where B.Key is null union select * from Table A right join Table B ON A.Key=B.Key where A.Key is null
MySQL 使用的是 Btree 索引
即一个索引只包含单个列,一个表可以有多个单列索引
CREATE INDEX index_name ON tableName(column_name);
索引列的值必须唯一,但允许有空值
CREATE UNIQUE INDEX index_name ON tableName(column_name);
设定为主键后数据库会自动建立索引,innoDB 为聚簇索引
// 单独建立主键索引ALTER TABLE customer add PRIMARY KEY customer(curtomer_no);// 删除主键索引ALTER TABLE customer drop PRIMARY KEY;// 修改主键索引 (必须先删除原索引,再新建索引)
即一个索引包含多个列
// 单独创建索引CREATE INDEX idx_no_name ON customer(customer_no,customer_name);
适合创建索引的情况
1. 主键自动建立唯一索引; 2. 频繁作为查询条件的字段应该创建索引; 3. 查询中与其他表关联的字段,外键关系建立索引; 4. 单键/组合索引的选择问题,组合索引性价比更高; 5. 查询中排序的字段,排序字段若通过索引去访问将大大提高排序素的; 6. 查询中统计或者分组字段;不适合创建索引的情况
转载地址:http://lsqwi.baihongyu.com/