一、数据结构

数据结构通常会影响两个维度的优化:一是响应时间;二是资源消耗。

● 选择时数据类型的影响

选择数据类型通常应该遵守以下规则:

1.越小越好

所谓的越小越好是指数据类型所占的字节空间,即所占的内存情况。

2.数据类型越简单越好

通常来说越简单的数据类型,在处理时所消耗的CPU时间频率是最少的,数据类型越复杂,所消耗的CPU时间频率就会越长。例如时间、日期、IP地址等,之所以会这样是因为复杂的数据类型在比较时不是简单的ACSII比较,必须借用专门的函数来比较。

3.避免使用NULL

在定义表时,避免允许使用NULL,如果非要使用也是使用NOT NULL,因为NULL表示不是一个值,这样就不好比较。

● 常见数据类型说明

1.整型

整数又分为:TINYINT、smallint、mediumint、int、bignit,分别所点的字节数为8、16、24、32、64个字节空间

2.实型

实型分为:Float、double,分别占4个和8个字节

3.字符

字符类型又分两种:char和varchar

char是固定的大小,例如char(10),占10个字节。

varchar可变长度,例如varchar(10),如果执行我们没有用到10个字符,那么用到多少个就内存就会分配多少个,但是最多不超过10个字符,最后会有额外的字节用来做标识的。

4.日期与时间

日期与时间所点字节数与日期和时间的格式无关,固定的占8个字节

二、 查询过程

数据库的数据结构与特点(数据库中的数据结构以及查询过程)(1)

所有我们输入的SQL语句最后都会变成一个可执行的计划,放在CPU中来理解就是一个任务,每个CPU(如果CPU是单核的话)那么只同时处理一个任务,即CPU只能同时处理一个线程。

查询在运行的有不同状态:

等待新的查询

线程正在执行查询或将查询的结果返回到客户端

表示表处于锁定状态

分析和统计相关的信息,并对查询进行优化

将结果集的数据拷贝临时表

对查询的结果进行排序

发送数据一般理解将数据返回到客户端,也可以是查询状态之间的数据传递。

查看当前查询状态的命令如下:

SHOW FULL PROCESSLIST

查询过程的步骤如下:

1.客户端向服务器发送请求

2.查询缓存

3.解析与优化查询

通常优化的内容的包括以下部分:

--->对连接表进行重新排序

--->将外链接变成内链接进行查询

--->代数等价法则,即关系运算符的处理

--->优化聚合函数: count()、min()、max()

--->计算和减少常量表达式

--->覆盖索引

--->子查询优化,将多个子查询转换为独立查询

--->尽早终结,是指执行的查询语句不要写的过长

--->优化in集合,优化in集合中的关系谓词

4.生成执行计划

5.查询引擎

,