01 | 基础架构: 一条SQL查询语句是如何执行的
有两个问题
- 权限验证的问题
命中查询缓存是返回结构的时候,做权限验证。但是又提出查询也会在优化器之前调用 precheck 验证权限?? - 分析器为什么有指向查询缓存的箭头?
05 | 深入浅出索引(上)
下面重建索引的做法,是否合适
alter table T drop primary key;
alter table T add primary key(id);
老师的参考答案:
重建主键的过程不合理, 不论是删除主键还是创建主键,都会将整个表重建,所以连着执行这两个语句,第一个语句白做了。这两个语句,可以用这个语句代替 alter table T engine=InnoDB
我的问题:
对于primary key 重建,使用alter table T engine=InnoDB
来解决,如果是修改primary key呢?
项目情况: 历史原因,没有创建自增ID autoincrement主键,使用的是primary key(fieldA, fieldB, fieldC)
, 因为业务需求,需要修改primary key (fieldA, fieldB, fieldD)
,有什么好的方法吗?
注:之前的操作是新建一张表,然后替换之前的表,很是麻烦
05 | 深入浅出索引(下)
CREATE TABLE `geek` (
`a` int(11) NOT NULL,
`b` int(11) NOT NULL,
`c` int(11) NOT NULL,
`d` int(11) NOT NULL,
PRIMARY KEY (`a`,`b`),
KEY `c` (`c`),
KEY `ca` (`c`,`a`),
KEY `cb` (`c`,`b`)
) ENGINE=InnoDB;
select * from geek where c=N order by a limit 1;
select * from geek where c=N order by b limit 1;
关于索引创建的问题,结论是ca可以去掉,cb保留。
但是做了一个测试, 结果表明cb索引没有用上