MySQL中当字段值为 `NULL` 时的注意事项

logo 9 2024-04-15

在MySQL中,当字段值为 NULL 时,它们通常不会参与常规的大小比较。在比较操作中,NULL 与任何其他值(包括另一个 NULL 值)进行比较时都不会被视为相等,也不会根据大小关系得出明确的结果。这是因为 NULL 代表未知或缺失的值,它不具有明确的大小属性。 以下是一些与 NULL 值比较相关的规则: 等值比 ...

详情...

MySQL order by 的列有相同的值并且需要分页查询时在order by 之后额外添加一个 order by id desc 条件

logo 55 2023-08-04

避免出现因堆排序的不稳定性导致的数据的重复和丢失 ...

详情...

MySQL 创建索引报错 "Specified key was too long; max key length is 767 bytes" 原因

logo 160 2023-02-21

在MySQL中,一般我们会给varchar类型设置255长度,但当我们给该字段设置索引时可能会报以下错误: #1071 - Specified key was too long; max key length is 767 bytes 报错原因: 767字节是 MySQL 版本5.6(以及以前版本)中 InnoDB 表 ...

详情...

MySql 定位和分析执行效率的方法

logo 472 2023-02-21

1、通过慢查询日志 slow.log 定位执行效率低的SQL MySQL开启慢查询日志,跑一段时间后拿日志中的慢查询语句进行 explain 分析。 2、通过 explain 分析低效 SQL 语句的执行计划 查询到效率低的 sql 语句后,可以通过 explain 分析低效 SQL 的执行计划。看是否可以基于索引查询 ...

详情...

MySql 字段类型说明和推荐

char(M)和varchar(M)的区别: char的长度是不可变的,而varchar的长度是可变的; char(M)定义的列的长度为固定的,M取值可以为0~255之间; varchar(M)定义的列的长度为可变长,M取值可以为0~65535之间; 注意这里的 M 是字符数,可以是M个汉字也可以是M个英文字母,与语言 ...

详情...

高并发系统数据库架构设计

logo 733 2023-02-12

在WEB网站的规模从小到大不断扩展的过程中,数据库的访问压力也不断的增加,数据库的架构也需要动态扩展,在数据库的扩展过程基本上包含如下几步,每一个扩展都可以比上一步骤的部署方式的性能得到数量级的提升。 WEB应用和数据库部署在同一台服务器上 一般的小规模的网站采用这种方式,用户量、数据量、并发访问量都比较小,否则单台服 ...

详情...

MySQL 共享锁&排他锁

logo 621 2022-08-07

共享锁(lock in share mode) 允许不同事务之间共享加锁读取,但不允许其它事务修改或者加入排他锁;如果有修改必须等待一个事务提交完成,才可以执行,容易出现死锁 共享锁事务之间的读取 session1: start transaction; select * from test where id = 1 ...

详情...

mysql 事务特性以及隔离级别说明

logo 562 2022-08-07

事务: 事务就是针对数据库的一组操作,它可以由一条或者多条SQL语句组成,同一个事务的操作具备同步的特点,如果其中有一条语句不能执行的话(或执行失败),那么所有的语句都不会执行,也就是说,事务中的语句要么都执行,要么都不执行。 注意只有使用innodb引擎的数据库或表才支持事务,MyISAM引擎不支持事务处理 事务特性 ...

详情...

MySQL order by limit 分页数据重复或丢失问题说明

logo 585 2022-08-07

mysql 中当 order by 与limit 同时使用,数据可能出现重复或丢失问题 使用了 下面的 方法 发现也没什么问题 Db::name('users') ->where(['is_disabled'=>0]) ->field('id,nickname,team_son+team_gran ...

详情...

理解 MySQL 字符集

logo 507 2022-05-04

转自:明月逐人归 平时我们用MySQL,字符编码方式一般是 utf8 或者 utf8mb4,至于MySQL内部是如何处理编码问题的在日常开发中并没有十分关注,遇到最多的问题也无非是表中中文乱码和表情无法存储。对于编码不一致的问题,出问题是在所难免的,我们需要系统地了解下在MySQL内部字符集是如何配置和转化的。 字符集 ...

详情...

MySQL 查询中 where in 如何保持顺序

logo 156 2022-02-17

select * from table_name where id in () 如上sql语句,MySQL会自动按主键自增排序,要是按IN中给定的顺序排序,写法如下: SELECT * from `models` where `id` in (26612,26611,26610) order by field(id,2 ...

详情...

MySQL 中位置经纬度按距离排序方法

已知数据库中有很多位置经纬度坐标 lng 、 lat,将这些位置按照距已知位置A(坐标 $lng 、$lat)的距离升序排序 SQL 语句 数据量小直接用SQL查询即可 升序排序示例:distance 是计算出来的距离单位是公里 $sql = "select *, ACOS(SIN(( $lat * 3.1415) ...

详情...