首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL 慢查询、 索引、 事务隔离级别

慢查询 什么是慢查询 MySQL 的慢查询日志是 MySQL 提供的一种日志记录,它用来记录在 MySQL 中响应时间超过阀值的语句,阈值指的是运行时间超过 long_query_time 值的 SQL...select_type: 查询的类型 table: 查询的表 partitions: 匹配的分区 type: join 类型 possible_keys: 查询中可能用到的索引 key:...真正的使用了哪些索引,由 key 决定 rows:MySQL 优化器会估算此次查询需要扫描的数据记录数(行数),这个值越小,查询效率越高 Extra: 这是查询语句所对应的“额外信息”, 常见的有...注 意 , 如 果 是 多 列 共 同 构 成 唯 一 索 引 , 代 表 的 是 多 列 的 数 据 组 合 是 唯 一 的 。...唯 一 索 引 , 同 样 支 持 单 列 和 多 列 , 但 是 必 须 被 指 定 为 P R I M A R Y K E Y 。

2.8K50

MySQL_库和表的使用(部分未完

查看创建库的记录(查看库结构) 只能查看已创建的库 本质上是查看创建库的所有语句,这些语句保存在了一个文件中,这个文件可以用于库的备份(见另一篇文章) 删除库 进入/使用库 查看当前所在库 退出库 严格来说也不是退出...只能查看已存在的表 本质上是打印出来创建表的时候执行的所有语句 省略长横线: 新增列(新增字段) 在SC表中的Cno列后面新增一列Grade 如果不加after,默认加在最后一列 新增一列之后,此列的数据默认为...一般情况下不建议使用全列查询 查询到的数据越多,数据传输量越大 可能会影响索引的使用 按列查询 查询指定字段的数据,并汇聚成一张表呈现出来 表达式查询 所以可以看出来,select到from之间的这部分...NOT NULL查询: where查询条件不一定必须存在于select要查询的字段中: 使用where时设置条件的字段,可以与select查询要获取的结果集字段无关,而是可以根据原有表中任意字段进行筛选...id、姓名、数学成绩 并将查询结果按照语文成绩,降序排列 where查询条件不一定必须存在于select要查询的字段中,而是可以根据原有表中任意字段进行筛选 排序也不一定按照select查询结果的字段进行排序

12210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL入门详解(二)---mysql事务、锁、以及优化

    但并不影响其他人对其他数据操作; 在InnoDB默认的隔离方式下,操作者不提交,操作数据只保存在内存里,另一用户可以查询,查询到的是旧值; 即使字段家里索引在使用时自己变了类型,索引失效会加表锁; 间隙锁...select_type 查询中每个select子句的类型 SIMPLE:简单SELECT(不使用UNION或子查询) PRIMARY:最外面的SELECT UNION:UNION中的第二个或后面的SELECT...语句 DEPENDENT UNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询 UNION RESULT:UNION 的结果 SUBQUERY:子查询中的第一个SELECT DEPENDENT...索引在内存中占的长度(轻易不要给varchar加索引) #ref 指定的条件类型 #rows 当前语句查到的行数 #Extra Distinct:MySQL发现第1个匹配行后,停止为当前的行组合搜索更多的行...Using index:从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息,代表性能不错 Using temporary:为了解决查询,MySQL需要创建一个临时表来容纳结果。

    1.1K50

    【建议收藏】MySQL 三万字精华总结 —锁机制和性能调优(四)

    需要强调的一点是,InnoDB 中行级锁是基于索引实现的,临键锁只与非唯一索引列有关,在唯一索引列(包括主键列)上不存在临键锁。 对于行的查询,都是采用该方法,主要目的是解决幻读的问题。...或 unique 索引,因为只要匹配一行数据,所以很快,如将主键置于 where 列表中,mysql 就能将该查询转换为一个常量 eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,...key列显示使用了哪个索引,一般就是在你的where语句中出现了between、、in等的查询,这种范围扫描索引比全表扫描要好,因为它只需开始于索引的某一点,而结束于另一点,不用扫描全部索引 index...,一个或多个,查询涉及到的字段若存在索引,则该索引将被列出,但不一定被查询实际使用) key 实际使用的索引,如果为NULL,则没有使用索引 查询中若使用了覆盖索引,则该索引和查询的 select 字段重叠...手动)类型转换),会导致索引失效而转向全表扫描 存储引擎不能使用索引中范围条件右边的列 尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select is null ,is not null

    95310

    开发人员不得不知的MySQL索引和查询优化

    如果列类型是字符串,那一定要在条件中数据使用引号,否则不使用索引。...如果业务中唯一特性最好建立唯一键,一方面可以保证数据的正确性,另一方面索引的效率能大大提高。...MySQL 中无法利用索引完成的排序操作称为“文件排序”,其实不一定是文件排序,内部使用的是快排。 using temporary:使用了临时表保存中间结果,MySQL 在对查询结果排序时使用临时表。...因为只能匹配一行数据,所以很快。如果将主键置于 where 列表中,MySQL 就能将该查询转换为一个常量。 eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。...range:只检索给定范围的行,使用一个索引来选择行。key 列显示使用了哪个索引,一般就是在你的 where 语句中出现 between、、in 等的查询。

    78120

    开发人员不得不知的MySQL索引和查询优化

    如果列类型是字符串,那一定要在条件中数据使用引号,否则不使用索引。...如果业务中唯一特性最好建立唯一键,一方面可以保证数据的正确性,另一方面索引的效率能大大提高。...MySQL 中无法利用索引完成的排序操作称为“文件排序”,其实不一定是文件排序,内部使用的是快排。 using temporary:使用了临时表保存中间结果,MySQL 在对查询结果排序时使用临时表。...因为只能匹配一行数据,所以很快。如果将主键置于 where 列表中,MySQL 就能将该查询转换为一个常量。 eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。...range:只检索给定范围的行,使用一个索引来选择行。key 列显示使用了哪个索引,一般就是在你的 where 语句中出现 between、、in 等的查询。

    64710

    开发人员不得不知的MySQL索引和查询优化

    如果列类型是字符串,那一定要在条件中数据使用引号,否则不使用索引。...如果业务中唯一特性最好建立唯一键,一方面可以保证数据的正确性,另一方面索引的效率能大大提高。...MySQL 中无法利用索引完成的排序操作称为“文件排序”,其实不一定是文件排序,内部使用的是快排。 using temporary:使用了临时表保存中间结果,MySQL 在对查询结果排序时使用临时表。...因为只能匹配一行数据,所以很快。如果将主键置于 where 列表中,MySQL 就能将该查询转换为一个常量。 eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。...range:只检索给定范围的行,使用一个索引来选择行。key 列显示使用了哪个索引,一般就是在你的 where 语句中出现 between、、in 等的查询。

    84520

    mysql基本知识点梳理和查询优化

    or,又想索引有效,只能将or条件中的每个列加上索引; 如果列类型是字符串,那一定要在条件中数据使用引号,否则不使用索引; B-tree索引 is null不会走,is not null会走,位图索引...; 如果业务中唯一特性最好建立唯一键,一方面可以保证数据的正确性,另一方面索引的效率能大大提高。...MySQL中无法利用索引完成的排序操作称为“文件排序”,其实不一定是文件排序,内部使用的是快排; using temporary:使用了临时表保存中间结果,MySQL在对查询结果排序时使用临时表。...因为只能匹配一行数据,所以很快。如果将主键置于where列表中,MySQL就能将该查询转换为一个常量; eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。...key列显示使用了哪个索引,一般就是在你的where语句中出现between、、in等的查询,这种范围扫描索引比全表扫描要好,因为只需要开始于缩印的某一点,而结束于另一点,不用扫描全部索引; index

    60510

    MySQL索引和查询优化

    如果业务中唯一特性最好建立唯一键,一方面可以保证数据的正确性,另一方面索引的效率能大大提高。...MySQL 中无法利用索引完成的排序操作称为“文件排序”,其实不一定是文件排序,内部使用的是快排。 using temporary:使用了临时表保存中间结果,MySQL 在对查询结果排序时使用临时表。...因为只能匹配一行数据,所以很快。如果将主键置于 where 列表中,MySQL 就能将该查询转换为一个常量。 eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。...range:只检索给定范围的行,使用一个索引来选择行。key 列显示使用了哪个索引,一般就是在你的 where 语句中出现 between、、in 等的查询。...初始化命令 SQLyog 中初始连接指定编码类型使用连接配置的初始化命令,如下图: SQL 语句总结 常用但容易忘的 SQL 语句常用但容易忘的总结如下: 如果有主键或者唯一键冲突则不插入:insert

    1.3K118

    MySQL not exists 真的不走索引么?

    在一些业务场景中,会使用NOT EXISTS语句确保返回数据不存在于特定集合,部分同事会发现NOT EXISTS有些场景性能较差,甚至有些网上谣言说”NOT EXISTS不走索引”,哪对于NOT EXISTS...通过MySQL提供的Profiling方式来查看两种方式的执行过程。 使用NOT EXIST方式的执行过程: ? 使用LEFT JOIN方式的执行过程: ?...从Profiling中只能看到47个” executeing和Sending data”的组合项(每个组合项约50us),通过执行计划看出,外表t_monitor的数据量为578436行,忽略统计信息不准情况下...除上述问题外,在优化过程中发现本应该存储相同数据的resource_id列在两个表中定义不同,一表为VARCHAR而另外一表为BIGINT,外部结果集的字段类型和NOT EXIST字表中字段类型不同导致...NOT EXISTS子查询中无法使用索引,使得子查询性能较差,最终影响整个查询的执行性能。

    2.7K40

    查看Mysql执行计划

    eq_ref:最多只会有一条匹配结果,一般是通过主键或者唯一键索引来访问;在连接中,MYSQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用...“对于每一种与另一个表中记录的组合,MySQL将从当前的表读取所有带有匹配索引值的记录。...7、select_type 所使用的查询类型,判断是否是复杂语句,主要有以下这几种查询类型 DEPENDENT SUBQUERY:子查询中内层的第一个SELECT,依赖于外部查询的结果集;DEPENDENT...:UNION 语句中第二个SELECT 开始的后面所有SELECT,第一个SELECT 为PRIMARYUNION RESULT:UNION 中的合并结果; 8、Extra 关于MYSQL如何解析查询的额外信息...tables:MySQL Query Optimizer 通过收集到的统计信息判断出不可能存在结果; Select tables optimized away:当我们使用某些聚合函数来访问存在索引的某个字段的时候

    3.3K10

    【21】进大厂必须掌握的面试题-65个SQL面试

    它比截断语句慢。 它更快。 Q10。什么是唯一键? 唯一标识表中的一行。 每个表允许多个值。 允许为空值。 Q11。什么是外键?...左连接: MySQL中的左连接用于返回左表中的所有行,但仅返回右表中满足连接条件的匹配行。 右连接: MySQL中的右连接用于返回右表中的所有行,但仅返回满足连接条件的左表中的匹配行。...完全联接: 当任何表中都存在匹配项时,完全联接将返回所有记录。因此,它将返回左侧表中的所有行和右侧表中的所有行。 Q16。您所说的非规范化是什么意思?...交叉联接产生两个表的叉积或笛卡尔积,而自然联接基于两个表中具有相同名称和数据类型的所有列。 Q28。什么是SQL中的子查询? 子查询是另一个查询中的查询,其中定义了查询以从数据库中检索数据或信息。...它不被视为独立查询,因为它引用另一个表并引用一个表中的列。 不相关的子查询:此查询是一个独立的查询,在主查询中替换了子查询的输出。 Q30。列出获取表中记录计数的方法?

    6.9K22

    数据库常见的面试题大全

    /in out 三种模式的参数 4、可作为一个独立的PL/SQL语句来执行 5、可以通过out/in out 返回零个或多个值 6、SQL语句(DML 或SELECT)中不可调用存储过程 函数 1、用于特定的数据...,必须作为表达式的一部分调用 6、通过return语句返回一个值,且改值要与声明部分一致,也可以是通过out类型的参数带出的变量 7、SQL语句(DML 或SELECT)中可以调用函数 5、索引的作用?...12、主键和外键的区别? 主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 13、在数据库中查询语句速度很慢,如何优化?...Oracle自己开发了一个数据类型varchar2,这个类型不是一个标准的varchar,他将在数据库中varchar列可以存储空字符串的特性改为存储null值,如果你想有向后兼容的能力,oracle建议使用...4)分页查询时候时候,mysql用limit oracle用rownum mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行

    1.4K40

    Java面试之数据库面试题

    程序头部声明时不需描述返回类型 程序头部声明时要描述返回类型,而且PL/SQL块中至少要包括一个有效的return语句 可以使用in/out/in out 三种模式的参数 可以使用in/out/in...,也可以是通过out类型的参数带出的变量 SQL语句(DML 或SELECT)中不可调用存储过程 SQL语句(DML 或SELECT)中可以调用函数 5、索引的作用?...12、主键和外键的区别? 主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 13、在数据库中查询语句速度很慢,如何优化?...Oracle自己开发了一个数据类型varchar2,这个类型不是一个标准的varchar,他将在数据库中varchar列可以存储空字符串的特性改为存储null值,如果你想有向后兼容的能力,oracle建议使用...4)分页查询时候时候,mysql用limit oracle用rownum mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行

    1.5K20

    数据库经典面试题,都给你收集好了!!!

    /out/in out 三种模式的参数 4、可作为一个独立的PL/SQL语句来执行 5、可以通过out/in out 返回零个或多个值 6、SQL语句(DML 或SELECT)中不可调用存储过程...或SELECT)中可以调用函数 5、索引的作用?...12、主键和外键的区别? 主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 13、在数据库中查询语句速度很慢,如何优化?...Oracle自己开发了一个数据类型varchar2,这个类型不是一个标准的varchar,他将在数据库中varchar列可以存储空字符串的特性改为存储null值,如果你想有向后兼容的能力,oracle建议使用...4)分页查询时候时候,mysql用limit oracle用rownum mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行

    1.6K30

    Java面试之数据库面试题

    程序头部声明时不需描述返回类型 程序头部声明时要描述返回类型,而且PL/SQL块中至少要包括一个有效的return语句 可以使用in/out/in out 三种模式的参数 可以使用in/out/in...,也可以是通过out类型的参数带出的变量 SQL语句(DML 或SELECT)中不可调用存储过程 SQL语句(DML 或SELECT)中可以调用函数 5、索引的作用?...12、主键和外键的区别? 主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 13、在数据库中查询语句速度很慢,如何优化?...Oracle自己开发了一个数据类型varchar2,这个类型不是一个标准的varchar,他将在数据库中varchar列可以存储空字符串的特性改为存储null值,如果你想有向后兼容的能力,oracle建议使用...4)分页查询时候时候,mysql用limit oracle用rownum mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行

    1.5K41

    MySQL索引原理、失效情况

    2 mysql索引优化 2.1 查看索引使用情况 使用方法:在select语句前加上explain 示例:EXPLAIN SELECT surname,first_name form a,b WHERE...Extra:关于MySQL如何解析查询的额外信息。 Extra列返回的描述的意义: Distinct: 一旦MySQL找到了与行相联合匹配的行,就不再搜索了。...eq_ref: 在连接中,MySQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用。...2.2 mysql索引使用策略 最好全值匹配--索引怎么建我怎么用。 最佳左前缀法则--如果是多列复合索引,要遵守最左前缀法则。指的是查询要从索引的最左前列开始并且不跳过索引中的列。...存储引擎不能使用索引中范围条件右边的列。--范围之后索引失效(,between and)。 尽量使用覆盖索引--索引和查询列一致,减少select *。--按需取数据用多少取多少。

    1.2K11

    mysql数据库面试题目及答案_java面试数据库常见问题

    WHERE 条件的数据行匹配时的搜索速度,在索引的使用过程中,存在一些使用细节和注意事项。...因此,可以定义一个让索引包含的额外的列,即使这个列对于索引而言是无用的。 6)范围查询对多列查询的影响 查询中的某个列有范围查询,则其右边所有列都无法使用索引优化查找。...9)like 语句的索引失效问题 like 的方式进行查询,在 like “value%” 可以使用索引,但是对于 like “%value%” 这样的方式,执行全表查询,这在数据量小的表,不存在性能问题...1、慢查询 2、索引 3、拆分表 实践中如何优化MySQL 顺序优化: 1.SQL语句及索引的优化 2....外键:表的外键是另一表的主键, 组合索引:索引可以覆盖多个数据列,如像INDEX(columnA, columnB)索引。

    92030

    2020最新版MySQL数据库面试题(三)

    .* from r full join s on r.c=s.c 什么是子查询 条件:一条SQL语句的查询结果做为另一条查询语句的条件或查询结果 嵌套:多条SQL语句嵌套使用,内部的SQL查询语句称为子查询...TIPS:查询中若使用了覆盖索引(覆盖索引:索引的数据覆盖了需要查询的所有数据),则该索引仅出现在key列表中 key_length 索引长度 ref 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值...优化特定类型的查询语句 count(*)会忽略所有的列,直接统计所有列数,不要使用count(列名) MyISAM中,没有任何where条件的count(*)非常快。...确保GROUP BY和ORDER BY只有一个表中的列,这样MySQL才有可能使用索引。...此外,垂直分区会让事务变得更加复杂; 垂直分表 把主键和一些列放在一个表,然后把主键和另外的列放在另一个表中 适用场景 1、如果一个表中某些列常用,另外一些列不常用 2、可以使数据行变小,一个数据页能存储更多数据

    91410

    【笔记】Mysql 数据库操作规范

    索引规范: 单张表中索引数量不超过 5 个。 单个索引中的字段数不超过 5 个。 索引名必须全部使用⼩写。 ⾮唯⼀索引按照“idx_字段名称 [字段名称]”进⾏命名。...表必须有主键,推荐使用 UNSIGNED ⾃增列作为主键。[FAQ-5-01] 唯一键由 3 个以下字段组成,并且字段都是整型时,可使⽤唯⼀键作为主键。其他情况下,建议使⽤⾃增列或发号器作主键。...联表查询时,JOIN 列的数据类型必须相同,并且要建立索引。 不在低基数列上建立索引,例如“性别”。[FAQ-5-04] 选择区分度⼤的列建立索引。组合索引中,区分度⼤的字段放在最前。...禁⽌有 SUPER 权限的应⽤程序账号存在。[FAQ-7-01] 禁⽌有 DDL、DCL 权限的应⽤程序账号存在。 重⼤项⽬的数据库⽅案选型和设计必须提前通知 DBA 参与。...[FAQ-7-02] 对同⼀个表的多次 ALTER 操作必须合并为⼀次操作。[FAQ-7-03] 不要在 MySQL 数据库中存放业务逻辑。[FAQ-7-04] 8.

    1.5K20
    领券