MySQL
文章平均质量分 54
MySQL进阶
上尤流苏
有一点理想
展开
-
TIDB表达式索引
使用MySQL数据库,并有SQL优化经验的开发者都知道,在字段上使用函数,是无法走索引的,最近使用TiDB数据库,发现有个概念叫做 “表达式索引”在一些场景中,查询的条件往往是基于某个表达式进行过滤。在这些场景中,一般的索引不能生效,执行查询只能遍历整个表,导致查询性能较差。表达式索引是一种特殊的索引,能将索引建立于表达式上。在创建了表达式索引后,基于表达式的查询便可以使用上索引,极大提升查询的性能。假设要基于 lower(col1) 这个表达式建立索引,示例的 SQL 语句如下:CREATE I原创 2021-12-10 09:48:32 · 1529 阅读 · 0 评论 -
MySQL大表添加字段: The table ‘xxxx‘ is full 或者 Incorrect key file for table ‘xxxx’; try to repair it
问题现象:当给MySQL大表添加字段时ALTER TABLE tbl_account ADD create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间';ALTER TABLE tbl_account ADD update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间';报错 Th原创 2021-08-03 18:05:27 · 569 阅读 · 0 评论 -
MySQL 事务与MVCC
MySQL 事务与MVCC事务的特性在MySQL中原子性:通过undo日志保证隔离性:通过MVCC保证一致性:通过原子性和隔离性保证数据一致性持久性:通过redo日志保证隔离级别在并发事务执行过程中,可能会出现对事务的一致性产生不同程度影响的现象:脏读、不可重复读、幻读如果同一时刻最多只允许一个事务运行,当前事务完成之后,其他事务才能执行,那么就不会出现上述问题了,但是性能就会非常差。为了解决这些问题 ,需要牺牲一些隔离性来保证并发执行的性能,因此SQL标准规定了一些隔离级别来解决上原创 2021-04-04 23:11:06 · 133 阅读 · 0 评论 -
MySQL复合索引
MySQL调优最直接的方式就是优化索引在单个列上创建索引相对简单,通常只需要考虑列的选择率即可,选择性越好,代表数据越分散,创建出来的索引性能也就更好在2个以上的列上创建的索引称为复合索引。复合索引创建的难点在于字段顺序选择如果存在等值查询和排序,则在创建复合索引时,将等值查询字段放在前面,排序放在最后面;如果存在多个等值查询,则选择性好的放在前面,选择性差的放在后面;如果存在等值查询、范围查询、排序。等值查询放在最前面,范围查询和排序需根据实际情况决定索引顺序;此外,《阿里巴巴Java开发手原创 2021-02-04 10:34:29 · 330 阅读 · 0 评论 -
SQL面试题
一道美团SQL面试题目,掌握SQL大部分关键字题目描述SQL解答易错点)题目描述学生表(STUDENT)ID(pk)STUDENT_NOSTUDENT_NAME11001王明21002李涛31003刘雨41004赵欢成绩表(SCORE)ID(pk)STUDENT_ID(fk)CLASS_NAMESCORE11语文9021数学9031英语9042语文6052数学原创 2021-01-13 16:18:20 · 240 阅读 · 0 评论