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

  • 相关阅读:
    当10年程序员是什么体验?存款几位数?
    基于SSM框架的图片分享及评价网站设计与实现毕业设计源码201524
    最新友盟微信,QQ与微博分享集成方案
    leetcode-二叉树的镜像-91
    flex布局中的align-content属性
    stm32知识记录
    【Kafka】Kafka指标报告器 MetricsReporter ClusterResourceListener
    QGIS编译(跨平台编译)之四十二:PostgreSQL安装(Windows、Linux、MacOS环境下安装)
    Python语音合成小工具(PyQt5 + pyttsx3)
    计算机网络学习笔记
  • 原文地址:https://blog.csdn.net/xxpxxpoo8/article/details/126143833