MySQL 数据库表设计时,我们如何为数据表选择合适的数据类型呢?


摘要:
下文讲述MySQL数据库中,如何为数据表选择合适的数据类型呢?


在数据表的列设计中,我们需遵循以下设计原则:
1.字段长度根据业务所需设置够用即可
2.字段设计中避免使用NULL
3.字段设计时,类型根据实际类型进行选择
例: 整型我们就需采用Int 而不要使用text varchar类型
4.字段字符集的设置,避免出现有些字符存储后变为乱码


类型简介

int:整型 无字符集区分,常用于存储数值型数据

date:存储日期类型,需结合时区对数据进行处理

time:存储时间类型,需结合时区对数据进行处理

  enum:存储枚举类型数据,例:性别

  char:固定长度字符串,要考虑字符集和(排序)校对集

  varchar:无固定长度字符串 要考虑字符集的转换和排序时的校对集,速度慢

  text/blog: 超大数据
  

类型长度选择

例:
年龄需选择tinyint
tinyint类型 最大可以存储 255
按照业务要求,年龄没有达到255岁

类型禁止设置允许NULL

由于NULL数据类型,不利于数据检索,不利于索引运用

MySQL数据库中,如何检测一个sql脚本是否使用索引的方法分享


摘要:
在MySQL数据库的sql脚本编写中,我们可以通过以下方法查询一个sql 脚本是否会使用索引


实现思路:
通过explain 关键字 可获取sql脚本的运行是否会使用索引

例:

   mysql> explain select * from `maomao365.com`;
+----+-------------+---------------+------+---------------+------+---------+------+------+-------+
| id | select_type | table         | type | possible_keys | key  | key_len | ref  | rows | Extra |
+----+-------------+---------------+------+---------------+------+---------+------+------+-------+
|  1 | SIMPLE      | maomao365.com | ALL  | NULL          | NULL | NULL    | NULL |    5 |       |
+----+-------------+---------------+------+---------------+------+---------+------+------+-------+
1 row in set (0.00 sec)
/*
相关说明:
  查询脚本是否使用索引,我们可以根据explain返回数据集中的type进行判断
   type:ALL 表示使用的全表扫描(这是一种没有使用索引的查询方法),效率比较低下
   type:ref或index 表示此查询语句会使用索引, 
     index 表示使用的是一个拥有唯一索引值的索引
     ref   表示使用了索引,但是不是一个唯一索引,里面的索引值可能会包含重复值
*/ 

MySQL 数据检索中各关键字的编写顺序和执行分析分享


摘要:
下文讲述MySQL中编写查询脚本时,select distin order by where limit group by where having on join 等关键字的编写顺序和执行顺序,如下表所示:

sql脚本编写和执行顺序

编写顺序

执行顺序

备注说明
1

7

SELECT
2

8

DISTINCT <select_list>
3

1

FROM <left_table>
4

3

<join_type> JOIN <right_table>
5

2

ON <join_condition>
6

4

WHERE <where_condition>
7

5

GROUP BY <group_by_list>
8

6

HAVING <having_condition>
9

9

ORDER BY <order_by_condition>
10

10

LIMIT <limit_number>

例:

 select name from tableName 
  where 1=1 
  ordr by name asc 
  limit 1;
  ---先获取tableName 后 根据where 过滤数据,再根据order by 排序 
---- 最后使用Limit关键字显示指定条数的数据