• mysql索引


    索引

    1. 普通索引
    ALTER TABLE students  ADD INDEX idx_score (score);
    
    • 1

    如果有多个字段可以

    ALTER TABLE students ADD INDEX idx_name_score (name, score);
    
    
    • 1
    • 2

    索引的效率取决于索引列的值是否散列,即该列的值如果越互不相同,那么索引效率越高。反过来,如果记录的列存在大量相同的值,例如gender列,大约一半的记录值是M,另一半是F,因此,对该列创建索引就没有意义

    1. 唯一索引

    例如身份证号,订单号等具有唯一性的数据列表,可使用唯一索引

    通过UNIQUE关键字我们就添加了一个唯一索引:

    ALTER TABLE students ADD UNIQUE INDEX uni_name (name);
    
    • 1

    也可以只对某一列添加一个唯一约束而不创建唯一索引:

    ALTER TABLE students
    ADD CONSTRAINT uni_name UNIQUE (name)
    
    • 1
    • 2

    四种事务隔离级别

    1.1 READ UNCOMMITTED
    读未提交,也叫未提交读,该隔离级别的事务可以看到其他事务中未提交的数据。该隔离级别因为可以读取到其他事务中未提交的数据,而未提交的数据可能会发生回滚,因此我们把该级别读取到的数据称之为脏数据,把这个问题称之为脏读。

    1.2 READ COMMITTED
    读已提交,也叫提交读,该隔离级别的事务能读取到已经提交事务的数据,因此它不会有脏读问题。但由于在事务的执行中可以读取到其他事务提交的结果,所以在不同时间的相同 SQL 查询中,可能会得到不同的结果,这种现象叫做不可重复读。

    1.3 REPEATABLE READ
    可重复读,MySQL 默认的事务隔离级别。可重复读可以解决“不可重复读”的问题,但还存在幻读的问题。所谓的幻读指的是,在同一事务的不同时间使用相同 SQL 查询时,会产生不同的结果。例如,一个 SELECT 被执行了两次,但是第二次返回了第一次没有返回的一行,那么这一行就是一个“幻像”行。

    注意:幻读和不可重复读的侧重点是不同的,不可重复读侧重于数据修改,两次读取到的同一行数据不一样;而幻读侧重于添加或删除,两次查询返回的数据行数不同。

    1.4 SERIALIZABLE
    序列化,事务最高隔离级别,它会强制事务排序,使之不会发生冲突,从而解决了脏读、不可重复读和幻读问题,但因为执行效率低,所以真正使用的场景并不多。

  • 相关阅读:
    11月20日,每日信息差
    WGCLOUD实践 - wgToken怎么使用
    数据库问题记录(粗略版)oracle、mysql等主流数据库通用
    JZC-32F005-HS3 功率继电器 引脚图 HF宏发
    Babel AST代码转换、生成
    Linux--信号
    云计算与虚拟化
    【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第六章 Vim 编辑器的使用
    google abseil c++ Tip of the Week #65: Putting Things in their Place 把对象放入容器的方式
    好用到爆,GitHub 星标 32.5k+的命令行软件管理神器,功能真强大
  • 原文地址:https://blog.csdn.net/xxpxxpoo8/article/details/126143833