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

  • 相关阅读:
    一致性 hash 环
    走进Oracle世界
    【推荐】数字化转型和数据治理资料合集124篇
    关于IDEA没有显示日志输出?IDEA控制台没有显示Tomcat Localhost Log和Catalina Log 怎么办?
    Windows与网络基础:子网掩码和子网划分
    CocosCreator 面试题(十二)Cocos Creator Label 的原理以及如何减少Drawcall
    【计算机网络】成功解决 ARP项添加失败:请求的操作需要提升
    centos 根目录逻辑卷扩容/home -> /
    使用Get-ADOrganizationalUnit导出指定OU下子OU列表
    Docker使用Calico网络模式配置及问题处理
  • 原文地址:https://blog.csdn.net/xxpxxpoo8/article/details/126143833