MySQL与PHP的基础与应用专题之索引

 更新时间:2022年02月22日 14:56:45   作者:我是小白呀  
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,本系列将带你掌握php与mysql的基础应用,本篇从索引开始

概述

从今天开始, 小白我将带领大家一起来补充一下 数据库的知识.

索引

索引 (Index) 是一种特殊的数据结构, 类似于图书的目录. 索引能够极大的提升数据库的查询效率. 如果没有索引, 在查询数据时必须扫描表中的说有记录才能找出符合条件的记录, 这种全表扫描的查询效率非常低.

索引的种类描述
普通索引最基本的索引, 没有任何限制, 仅加速查询
唯一索引索引列的值必须唯一, 但允许有空值
主键索引一种特殊的唯一索引, 不允许有空值
复合索引两个或多个列上的索引被称作符合索引
全文索引对文本内容进行分词索引

格式:

CREATE INDEX 索引名 ON 表名(列名)

查询分析器 EXPLAIN

EXPLAIN 命令可以查看 SQL 语句的执行计划. 当 EXPLAIN 与 SQL 语句一起使用时, MySQL 将显示来自优化器的有关语句执行计划的信息. MySQL 解释了它将如何处理语句, 包括有关如何连接表以及以何种顺序连接表的信息.

查询分析器的用途:

  • 分析出表的读取顺序
  • 数据读取操作的操作类型
  • 哪些索引可以使用
  • 哪些索引被实际使用
  • 表之间的引用
  • 每张表有多少行被优化器查询

结果解析:

参数描述
id执行 SELECT 或操作表的顺序
select_type查询的类型, 如 SIMPLE, PRIMARY, SUBQUERY, DERIVED, UNION 等
table当前行使用的表名
partitions匹配的分区
type连接类型
possibile_keys可能使用的索引
key实际使用的索引, NULL 表示未使用索引
key_len查询中使用的索引长度
ref列与索引的比较
rows扫描的行数
filtered选取的行数占扫描的行数的百分比
extra其他信息

格式:

EXPLAIN SQL 语句

例子:

MySQL 日志

日志 (Log) 用于记录数据库的运行情况, 以及用户对数据库执行的各类操作. 当数据库发生故障时, 可以根据日志分析和解决问题, 从而对数据进行恢复.

日志描述
重做日志 (Redo Log)重做日志是一种物理格式的日志, 记录的是物理数据页面修改的信息
回滚日志 (Undo Log)回滚日志是一种逻辑格式的日志, 在执行 Undo 的时候. 仅仅是将数据从逻辑上恢复至事务之前的状态
二进制日志 (Bin Log)二进制日志是一种逻辑格式的日志, 以二进制文件的形式记录了数据库中的操作, 但不记录查询语句
错误日志 (Error Log)错误日志记录着 Mysqld 启动和停止, 以及服务器在运行过程中发生的错误的关信息
慢查询日志 (Slow Query Log)慢查询日志记录执行时间过长和没有使用索引的查询语句
一般查询日志 (General Log)记录了服务器收到的每一个查询或是命令, 无论这些查询是命令是否正确甚至是否包含语法错误
中继日志 (Relay Log)中级日志类似二进制, 可用于复制架构中, 使从服务器和主服务器的数据保持一致

慢查询日志

慢查询日志用于记录 MySQL 数据库中响应时间超过指定阈值的语句. 慢查询日志通常也被称为慢体质, 因为慢查询不仅仅针对 SELECT 语句, 像 INSERT, UPDATE, DELETE 等语句. 只要响应时间超过所设定阈值都会记录在慢查询日志中.

参数描述
slow_query_log是否开启慢查询日志, 1 表示开启, 0 表示关闭
slow_query_log_file慢查询日志存储路径, 可选
long_query_time阈值, 当 SQL 语句的响应时间超过阈值就会被记录到日志中
log_queries_ not_using_indexes未使用索引的查询也被记录到慢查询中, 可选
log_output日志存储方式, 默认为 FILE
log_output=‘FILE’ 表示将日志存入文件
log_output=‘TBALE’ 表示将日志存入数据库
log_output=‘FILE, TABLE’ 表示同时将日志存入文件和数据库

开启慢查询:

set slow_query_log='ON';
set long_query_time=1;

到此这篇关于MySQL与PHP的基础与应用专题之索引的文章就介绍到这了,更多相关MySQL 索引内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL中的套接字错误解决

    MySQL中的套接字错误解决

    socket文件是一种特殊的文件,可以促进不同进程之间的通信,有时候系统或MySQL配置的更改可能导致MySQL无法读取套接字文件,本文主要介绍了MySQL中的套接字错误解决,感兴趣的可以了解一下
    2024-02-02
  • MySQL多表连接的入门实例教程

    MySQL多表连接的入门实例教程

    这篇文章主要给大家介绍了关于MySQL多表连接的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • Mysql查询时如何使用for update行锁还是表锁

    Mysql查询时如何使用for update行锁还是表锁

    这篇文章主要介绍了Mysql查询时如何使用for update行锁还是表锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • MySQL rand函数实现随机数的方法

    MySQL rand函数实现随机数的方法

    在mysql中,使用随机数写一个语句能一下更新几百条MYSQL数据吗?答案是肯定的,使用MySQL rand函数,就可以使现在随机数
    2016-09-09
  • MySQL使用物理方式快速恢复单表

    MySQL使用物理方式快速恢复单表

    这篇文章主要介绍了MySQL使用物理方式快速恢复单表,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • 利用MySQL Shell安装部署MGR集群的详细过程

    利用MySQL Shell安装部署MGR集群的详细过程

    MySQL Shell是一个客户端工具,可用于方便管理和操作MySQL,支持SQL、JavaScript、Python等多种语言,也包括完善的API,本文介绍如何利用MySQL Shell + GreatSQL 8.0.25构建一个三节点的MGR集群,感兴趣的朋友一起看看吧
    2022-02-02
  • 带你快速了解SQL窗口函数

    带你快速了解SQL窗口函数

    窗口函数,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理,下面这篇文章主要给大家介绍了关于SQL窗口函数的相关资料,需要的朋友可以参考下
    2022-03-03
  • linux修改mysql数据库文件的路径

    linux修改mysql数据库文件的路径

    在网上找了好多,没有确定哪个是最终的答案,由于网站在运行中,实在不敢轻易动手,怎么奈我是个菜鸟呢!先把找到的东西简单记录一下,回头再说
    2012-01-01
  • MySQL中的CONCAT()函数:轻松拼接字符串的利器

    MySQL中的CONCAT()函数:轻松拼接字符串的利器

    这篇文章主要介绍了MySQL中的CONCAT()函数:轻松拼接字符串的利器,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • MySQL中由load data语句引起死锁的解决案例

    MySQL中由load data语句引起死锁的解决案例

    这篇文章主要介绍了MySQL中由load data语句引起死锁的解决案例,文中讲到了InnoDB引擎的数据表中一些锁的机制,需要的朋友可以参考下
    2016-01-01

最新评论