mysql的大小写对性能的影响问题

一. mysql对大小写是否敏感是根据平台区分的

1. 默认情况下: linux环境严格区分大小写,windows环境下不区分大小写**

所以正常开发的时候在本地测试数据库名或者表名大小写没关系,迁移到linux服务器的时候就会报错。一定要注意这个问题.
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:

  1. 数据库名与表名是严格区分大小写的;
  2. 表的别名是严格区分大小写的;
  3. 列名与列的别名在所有的情况下均是忽略大小写的;
  4. 变量名也是严格区分大小写的;

2.linux环境下更改mysql表名大小写不敏感

# 编辑配置文件
vi /etc/my.cnf
# 在[mysqld]后添加添加
lower_case_table_names=1
# 重启服务
service mysqld stop
service mysqld start

二、sql语句的关键字大小写对sql语句性能的影响

1. 使用存储过程模拟20万数据

# 创建表
CREATE TABLE employees (
  id INT NOT NULL,
  fname VARCHAR(30),
  lname VARCHAR(30),
  birth TIMESTAMP,
  hired DATE NOT NULL DEFAULT '1970-01-01',
  separated DATE NOT NULL DEFAULT '9999-12-31',
  job_code INT NOT NULL,
  store_id INT NOT NULL
  )
  partition BY RANGE (store_id) (
  partition p0 VALUES LESS THAN (10000),
  partition p1 VALUES LESS THAN (50000),
  partition p2 VALUES LESS THAN (100000),
  partition p3 VALUES LESS THAN (150000),
  Partition p4 VALUES LESS THAN MAXVALUE
  );
	

 # 创建存储过程
 CREATE PROCEDURE BatchInsert(IN init INT, IN loop_time INT)  -- 第一个参数为初始ID号(可自定义),第二个位生成MySQL记录个数
  BEGIN
      DECLARE Var INT;
      DECLARE ID INT;
      SET Var = 0;
      SET ID = init;
      WHILE Var < loop_time DO
          insert into employees(id, fname, lname, birth, hired, separated, job_code, store_id) values (ID, CONCAT('chen', ID), CONCAT('haixiang', ID), Now(), Now(), Now(), 1, ID);
          SET ID = ID + 1;
          SET Var = Var + 1;
      END WHILE;
  END;
 # 调用存储过程
CALL BatchInsert(30036, 200000);   -- 调用存储过程插入函数

测试关键字及字段名,表名大小写对sql执行时间的影响


select id ,fname lname ,birth ,hired ,separated,job_code,store_id from employees 
# 0.605s  0.610s 0.572S 平均值0.595

SELECT id ,fname lname ,birth ,hired ,separated,job_code,store_id FROM employees
 # 0.570S  0.576s 0.594S  平均值:0.580s

SELECT ID ,FNAME LNAME ,BIRTH ,HIRED ,SEPARATED,JOB_CODE,STORE_ID FROM EMPLOYEES
 # 0.634s 0.576s 0.575s  平均值: 0595s

select id c1 ,fname c2, lname c3 ,birth c4 ,hired  c5,separated c6,job_code c7,store_id c8 from employees
 # 0.629s 0.653s 0.685s 平均值:0.655s

SELECT id c1 ,fname c2, lname c3 ,birth c4 ,hired  c5,separated c6,job_code c7,store_id c8 FROM employees 
# 0.663s .0647s 0.625s 平均值:0.645s

SELECT ID C1 ,FNAME C2, LNAME C3 ,BIRTH C4 ,HIRED  C5,SEPARATED C6,JOB_CODE C7,STORE_ID C8 FROM EMPLOYEES 
# 0.648s 0.645s 0.657s 平均值: 0.650s

总结:

  1. 同样一句sql,性能比较:关键字大写>所有语句大写>所有语句小写
  2. 为查询结果相同的sql,为每一列起别名以后使sql语句性能降低
  3. 建议在日常开发中将sql的关键字大写,以提高效率
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T-OPEN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值