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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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的关键字大写,以提高效率


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
缓存 关系型数据库 MySQL
MySQL索引策略与查询性能调优实战
在实际应用中,需要根据具体的业务需求和查询模式,综合运用索引策略和查询性能调优方法,不断地测试和优化,以提高MySQL数据库的查询性能。
|
2月前
|
存储 关系型数据库 MySQL
提高MySQL查询性能的方法有很多
提高MySQL查询性能的方法有很多
195 7
|
2月前
|
存储 关系型数据库 MySQL
提高MySQL的查询性能
提高MySQL的查询性能
79 4
|
1月前
|
SQL 关系型数据库 MySQL
MySQL性能探究:count(*)与count(1)的性能对决
在MySQL数据库的性能优化中,对查询语句的细微差别有着深入的理解是非常重要的。`count(*)`和`count(1)`是两种常用的聚合函数,用于计算行数。在面试中,面试官经常会问到这两种函数的性能差异。本文将探讨`count(*)`与`count(1)`的性能对比,并整理十道经典的MySQL面试题,帮助你在面试中游刃有余。
72 3
|
1月前
|
缓存 监控 关系型数据库
如何根据监控结果调整 MySQL 数据库的参数以提高性能?
【10月更文挑战第28天】根据MySQL数据库的监控结果来调整参数以提高性能,需要综合考虑多个方面的因素
79 1
|
1月前
|
监控 关系型数据库 MySQL
如何监控和诊断 MySQL 数据库的性能问题?
【10月更文挑战第28天】监控和诊断MySQL数据库的性能问题是确保数据库高效稳定运行的关键
139 1
|
1月前
|
缓存 关系型数据库 MySQL
如何优化 MySQL 数据库的性能?
【10月更文挑战第28天】
106 1
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
243 1
|
2月前
|
存储 关系型数据库 MySQL
优化 MySQL 的锁机制以提高并发性能
【10月更文挑战第16天】优化 MySQL 锁机制需要综合考虑多个因素,根据具体的应用场景和需求进行针对性的调整。通过不断地优化和改进,可以提高数据库的并发性能,提升系统的整体效率。
118 1
|
2月前
|
SQL 关系型数据库 MySQL
MySQL中的 where 1=1会不会影响性能?看完官方文档就悟了!
本文探讨了在Mybatis中使用`where 1=1`进行动态SQL拼接是否会影响性能。通过MySQL官方资料和实际测试表明,`where 1=1`在MySQL 5.7及以上版本中会被优化器优化,因此对性能影响不大。文中详细对比了`where 1=1`与`&lt;where&gt;`标签的使用方法,并建议根据MySQL版本和团队需求选择合适的方式。最后,推荐查找官方资料以确保技术路线正确。
57 4
下一篇
DataWorks