【MySQL】SQL优化、char、varchar、外键约束、排查慢sql等重点知识汇总

目录

SQL语句

char和varchar比较

SQL语句如何优化

说一下你理解的外键约束

如何排查慢 sql


SQL语句

对库操作

创建数据库

create database 数据库名

删除数据库

drop database 数据库名

显示所有数据库

show databases

选中数据库

use 数据库名

对表操作

创建表

create table 表名(列名 类型,列名 类型...)

删除表

drop table 表名

查看指定表结构

desc 表名

查看当前库所有表

show tables

对数据操作

新增数据

insert into 表名 values (值,值...)

删除数据

delete from 表名 where 条件

查询数据

select 列名 from 表名

修改数据

update 表名 set 列名=值,列名=值... where 条件

char和varchar比较

char和varchar的区别如下:

  1. char类型可存储字符上限为255,varchar类型可存储字符上限与表的编码格式有关。
  2. char(L) 定义后,无论存储的字符串长度是否到达L,都会开辟用于存储L个字符的定长空间,如果存储的字符串长度超过L则会报错。
  3. varchar(L) 定义后,会根据存储字符串的长度按需开辟空间,并且需要使用1-3字节的空间用于表示存储字符串的长度以及其他控制信息,如果存储的字符串长度超过L则会报错。

char和varchar的优缺点如下:

  1. char类型的数据是定长的,因此磁盘空间比较浪费,但是效率高(直接访问定长的空间)。
  2. varchar类型的数据是变长的,因此磁盘空间比较节省,但是效率低(需要先读取存储字符串的长度,再访问指定长度的空间)。
  3. 如果要存储的数据是定长的,那就使用char类型进行存储,比如身份证号码、手机号、md5等。
  4. 如果要存储的数据是变长的,那就使用varchar类型进行存储,比如名字、地址等。
  5. varchar适用于存储可变长度的字符,当字符长度不确定或变化较大时,varchar可以更节省存储空间。

SQL语句如何优化

当涉及 SQL 语句优化时,我会着重关注查询性能,因为在实际应用中,查询性能经常是一个重要的优化点。

建立合适的索引:

确保数据库表上的列上有适当的索引。索引可以加速数据检索操作。

避免在大数据表上进行全表扫描。使用索引来限定数据范围。

谨慎使用通配符:

在WHERE子句中避免使用通配符(例如%),因为它们会导致全表扫描。如果确实需要使用通配符,尽量将它们放在搜索模式的末尾。

避免使用SELECT *:

仅选择需要的列,而不是使用SELECT *选择所有列。这减少了数据传输和内存消耗。

使用JOIN而不是子查询:

在合适的情况下,使用JOIN来关联表,而不是使用子查询。JOIN通常比子查询效率更高。

分页优化:

当需要分页查询大数据集时,使用LIMIT和OFFSET来限制返回的行数,而不是检索整个结果集。

使用合适的数据类型:

使用合适大小的数据类型来存储数据,避免使用过大或过小的数据类型。

SQL优化是一个复杂的领域,涉及多个方面,包括查询编写、数据库设计、索引设计和硬件配置等。根据具体的应用和数据库系统,优化方法可能会有所不同。

合理设计数据库结构:

数据库的设计和规范化也对性能有重要影响。合理的表结构和关系设计有助于避免性能问题。

说一下你理解的外键约束

举例来说,某一个字段是表b的主键,但是它也是表a中的字段,表a中该字段的使用范围取决于表b。外键约束主要是用来维护两个表的一致性

外键约束的作用是维护表与表之间的关系,确保数据的完整性和一致性。

让我们举一个简单的例子:

假设你有两个表,一个是学生表,另一个是课程表,这两个表之间有一个关系,即一个学生可以选修多门课程,而一门课程也可以被多个学生选修。在这种情况下,我们可以在学生表中定义一个指向课程表的外键,如下所示:

CREATE TABLE students ( id INT PRIMARY KEY, name VARCHAR(50), course_id INT, FOREIGN KEY (course_id) REFERENCES courses(id) );

这里,students表中的course_id字段是一个外键,它指向courses表中的id字段。这个外键约束确保了每个学生所选的课程在courses表中都存在,从而维护了数据的完整性和一致性。

如果没有定义外键约束,那么就有可能出现学生选了不存在的课程或者删除了一个课程而忘记从学生表中删除选修该课程的学生的情况,这会破坏数据的完整性和一致性。

因此,使用外键约束可以帮助我们避免这些问题。

如何排查慢 sql

在慢SQL的优化过程中,可以从以下五个角度去进行思考优化:SQL优化、资源占用、业务改造、数据减少、源头替换

在治理慢查的过程中,SQL语句的使用问题是导致慢SQL的主要因素,因此本文主要从SQL优化角度出发,对慢SQL的常见原因和特征进行分析,介绍慢SQL的优化过程以及一些有效的调优技巧和工具,希望能够提供一些有用的方法和策略,帮助大家更好地应对慢SQL问题,并最终实现提升系统性能和优化用户体验的目标。

你可能感兴趣的:(MySQL,mysql,sql,oracle)