MySQL 开发实战指南:从字段规范到查询优化的核心技巧
发布时间:2026-06-22 15:11:09 分类:MySQL
MySQL 是后端开发中最核心的关系型数据库,但很多开发者对它的理解停留在“增删改查”层面。当数据量达到百万级时,不合理的表结构和SQL写法会导致性能急剧下降。本文将基于实际开发经验,从字段设计规范、索引优化策略、常见SQL陷阱以及实用运维技巧四个维度,带你系统地掌握MySQL在生产环境中的最佳实践。读完本文,你将能够:设计出高效、规范的数据库表结构理解B+树索引原理,并正确使用索引避开开发中常见的慢SQL“深坑”掌握处理“脏数据”和字符集问题的实用方法一、表字段设计规范(好的设计是性能的一半)1. 数据类型选择原则原则 说明 错误示例 正确示例够用就好 能用TINYINT不用INT,能用VARCHAR(20)不用VARCHAR(255) age IN
CentOS 8 yum 安装Redis ,安装Golang,RPM安装MySQL
发布时间:2021-11-11 14:06:17 分类:php
国内的话建议修改yum源为阿里云,修改方法参考: CentOS 8修改yum源为国内源;1.添加EPEL仓库在CentOS或Red Hat系统中,需要先添加EPEL仓库 #添加EPEL仓库 sudo yum install epel-release #更新yum源sudo yum update2.安装yum install redis3.启动systemctl start redis4.设置开机自启systemctl enable redis5.修改配置打开/etc/redis.conf文件。1)允许远程连接找到下面这一行,注释掉:b
mysql 去掉字段空格 tab 换行键 回车键
发布时间:2021-10-15 10:08:19 分类:MySQL
msyql有去掉两边trim,左侧ltrim,右侧rtrim的函数可以直接用update 表名 set 字段名=ltrim(字段名)有时候不顶事可以用下面解决,去掉空格update `sptcs_warrior` set `ID_number`=replace(`ID_number`,'','')如果excel导表不小心产生了空格update `表名` set 字段名= replace(replace(replace(字段名,char(9),''),char(10),''),char(13)
mysql 常见错误之: SQL Error: 1366: Incorrect string value: \xE8\xAF\xA6\xE7\xBB\x86: for column
发布时间:2021-06-28 15:57:50 分类:MySQL
当遇到无法往数据库插入中文的时候,常常伴随出现SQL Error: 1366: Incorrect string value: \xE8\xAF\xA6\xE7\xBB\x86: for column这类的错误报告一般是字符串编码问题,建议修改为utf-8
PHP面试问题整理一(PHP + MySQL + Redis + mongoDB + kafka)
发布时间:2021-04-16 16:05:06 分类:php
PHP 面向对象的理解 面向对象的思想,既把一系列事物可以抽象看作一个个体,或者一种类型的属性,操作看作是一个对象,将其封装为一个类, 内部包含这个抽象概念相关的一些属性及相关操作 面向对象的三大特征 封装,继承,多态 封装:既把一系列的属性,方法封装在一个类中,给每个属性添加关键字(public,protected,private) &nbs
mysql-innodb锁类型
发布时间:2021-04-09 14:58:51 分类:MySQL
数据库锁定机制就是为了保证数据的一致性,使得各种共享资源在被并发访问时变得有序。mysql支持三种级别的锁定机制:表级锁定(table-level),行级锁定(row-level),页级锁定(page-level)。1.表级锁定(table-level)表级锁是mysql中锁粒度最大的锁定机制,一次会将整张表锁定,不会出现死锁问题2.行级锁定(row-level)行级锁是锁粒度最小的锁定机制。由于锁粒度最小,所以锁定资源发生的争用也就最小,这样提高了应用程序并发处理的能力同时提高了整个系统的性能,但是每次获取锁和释放锁都要做很多事情,带来的消耗也就增加,也最容易发生死锁。3.页级锁定(page-level)页级锁定的特点是锁定颗粒度介于行级锁定与表级锁
MySQL表碎片整理OPTIMIZE TABLE操作
发布时间:2020-12-24 19:05:37 分类:php
删除数据时,mysql并不会回收已删除的数据所占据的存储空间,以及索引位。而是空在那里,而是等待新的数据来弥补这个空缺,这样就有一个缺少,如果一时半会,没有数据来填补这个空缺1.MySQL官方建议不要经常(每小时或每天)进行碎片整理,一般根据实际情况,只需要每周或者每月整理一次即可,可以写成定时任务来做。2.OPTIMIZE TABLE只对MyISAM,BDB和InnoDB表起作用,尤其是MyISAM表的作用最为明显。此外,并不是所有表都需要进行碎片整理,一般只需要对包含上述可变长度的文本数据类型的表进行整理即可。3.在OPTIMIZE TABLE运行过程中,MySQL会锁定表。4.默认情况下,直接对InnoDB引擎的数据表使用OPTIMIZE TAB
MySql 将一个表的字段值更新到另一张表
发布时间:2020-10-14 18:01:44 分类:MySQL
此处语法为两个不同结构的表中用一张表的字段填充到另一张表某些字段中sql语句update table1 a1,table2 a2 set a1.要填充字段=a2.对应索取字段where a1.id=a2.id#必须保证有对应字段写在where之后 可以正常添加筛选条件
php 简单的mysql数据库类,mysqli调用方式
发布时间:2020-07-08 18:58:51 分类:php
include 'mysql.php'; $conn = new mysql('127.0.0.1','root','','hulong','','UTF8');$filed = 'title,type'; $value = '"AAA",1'; $conn->insert('wx_news',$filed,$value);<?phpclass mysql { private $db_host; //数据库主
MySQL Explain详解
发布时间:2020-05-19 10:05:57 分类:MySQL
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。-- 实际SQL,查找用户名为Jefabc的员工select * from emp where name = 'Jefabc';--