首页 > 数据库技术 > 详细

MySQL数据库

时间:2019-07-06 09:28:43      阅读:135      评论:0      收藏:0      [点我收藏+]

一、MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。

创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

建立索引会占用磁盘空间的索引文件。

 

1、普通索引:最基本的索引没有任何的限制。

        ALTER table tableName ADD INDEX indexName(columnName)

        CREATE INDEX indexName ON mytable(username(length));

2、唯一索引:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

       CREATE UNIQUE INDEX indexName ON mytable(username(length))

       ALTER table mytable ADD UNIQUE [indexName] (username(length))

 

 

例:核心托管账批量执行时间约2个小时,增加索引后,时间缩短至15分钟左右。

 

ALTER TABLE `cls_tr_loan` ADD UNIQUE `uniq_bill_no` (`EX_BILL_NO`, `EX_SYSTEM`) comment ‘外部借据索引‘;

 

ALTER TABLE `cls_tr_term` ADD INDEX `idx_bill_term_no` (`EX_BILL_NO`, `TERM_NO`,`EX_SYSTEM`) comment ‘外部系统唯一系统‘;

 

ALTER TABLE `wb_tm_loan` ADD INDEX `idx_acct_loan_id` (`ACCT_NO`, `LOAN_ID`) comment ‘账户借据ID索引‘;

 

ALTER TABLE `wb_tm_plan` ADD INDEX `idx_acct_nbr_term` (`ACCT_NO`, `REF_NBR`, `TERM`) comment ‘账户借据号唯一索引‘;

 

ALTER TABLE `wb_tm_schedule` ADD INDEX `idx_uniq_acct_id` (`ACCT_NO`,`LOAN_ID`) comment ‘账户借据ID‘, ADD UNIQUE `uniq_schedule_id` (`SCHEDULE_ID`) comment ‘还款计划ID‘;

 

ALTER TABLE `wb_tt_txn_post` ADD INDEX `idx_acct_nbr_code` (`ACCT_NO`, `REF_NBR`, `TXN_CODE`) comment ‘账户借据号唯一索引‘;

 

二、聚合函数:count、avg、sum、max、min、round(avg(字段),2):取两位小数

三、

技术分享图片
-- 3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
select b.s_id,b.s_name,ROUND(AVG(a.s_score),2) as avg_score from 
    student b 
    join score a on b.s_id = a.s_id
    GROUP BY b.s_id,b.s_name HAVING ROUND(AVG(a.s_score),2)>=60;
MySQL面试题
技术分享图片
-- 10、查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息
 
select a.* from 
    student a 
    where a.s_id in (select s_id from score where c_id=01 ) and a.s_id not in(select s_id from score where c_id=02)
MySQL面试题

四、MySQL架构及生命周期:

技术分享图片

1. mysql 服务器监听3306端口
2. 验证访问用户
3. 创建mysql线程
4. 检查内存(querychache)
5. 解析sql
6. 生成查询计划
7. 打开表
8. 检查内存(buffer pool)
9. 到磁盘读取数据
10. 将从磁盘读取的数据写入内存
11. 返回数据给客户端
12. 关闭表
13. 关闭线程
14. 关闭连接

 

MySQL数据库

原文:https://www.cnblogs.com/wangkc/p/11141591.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!