数据库
文章平均质量分 81
Apache呀
这个作者很懒,什么都没留下…
展开
-
MySQL全文索引揭秘:提升搜索效率的关键
我们都知道 InnoDB 在模糊查询数据时使用 “%xx” 会导致索引失效,但有时需求就是如此,类似这样的需求还有很多,例如,搜索引擎需要根基用户数据的关键字进行全文查找,电子商务网站需要根据用户的查询条件,在可能需要在商品的详细介绍中进行查找,这些都不是B+树索引能很好完成的工作。通过数值比较,范围过滤等就可以完成绝大多数我们需要的查询了。但是,如果希望通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值比较,全文索引就是为这种场景设计的。转载 2024-01-29 18:04:36 · 151 阅读 · 1 评论 -
SQL中 WITH AS 的使用方法
WITH AS短语,也叫做子查询部分(subquery factoring),可以定义一个SQL片断,该SQL片断会被整个SQL语句用到。可以使SQL语句的可读性更高,也可以在UNION ALL的不同部分,作为提供数据的部分。对于UNION ALL,使用WITH AS定义了一个UNION ALL语句,当该片断被调用2次以上,优化器会自动将该WITH AS短语所获取的数据放入一个Temp表中。而提示meterialize则是强制将WITH AS短语的数据放入一个全局临时表中。原创 2023-12-18 18:01:53 · 453 阅读 · 0 评论 -
如何解决MySQL主从复制延时问题
有时候我们遇到从数据库中获取不到信息的诡异问题时,会纠结于代码中是否有一些逻辑会把之前写入的内容删除,但是你又会发现,过了一段时间再去查询时又可以读到数据了,这基本上就是主从延迟在作怪。主从延迟,其实就是“从库回放” 完成的时间,与 “主库写 binlog” 完成时间的差值,会导致从库查询的数据,和主库的不一致。原创 2023-11-02 15:00:03 · 90 阅读 · 0 评论 -
详解 SELECT COUNT(*)
本文通过一个例子深入剖析了 MySQL 的执行计划是如何选择的,以及为什么它的选择未必是我们认为的最优的,这也提醒我们,在生产中如果有多个索引的情况,使用 WHERE 进行过滤未必会选中你认为的索引,我们可以提前使用 EXPLAIN, optimizer trace 来优化我们的查询语句。转载 2023-09-05 14:49:35 · 943 阅读 · 0 评论 -
列存储为什么能够大幅度提高数据的查询性能?
传统的存储数据的方式是逐行存储(Row Store),每一个Page存储多行数据,而列存储(Column Store)把数据表中的每一列单独存储在Page集合中,这意味着,Page集合中存储的是某一列的数据,而不是一行的所有列的数据。 列存储索引适合于数据仓库中,主要执行大容量数据加载和只读查询,与传统面向行的存储方式相比,使用列存储索引存储可最多提高 10 倍查询性能 ,与使用非压缩数据大小相比,可提供多达 7 倍数据压缩率。转载 2023-06-28 14:10:05 · 159 阅读 · 1 评论 -
看一遍就理解:group by详解
having子句用于分组后筛选,where子句用于行条件筛选having一般都是配合group by和聚合函数一起出现如(where条件子句中不能使用聚集函数,而having子句就可以。having只能用在group by之后,where执行在group by之前。转载 2023-06-26 16:13:59 · 1808 阅读 · 0 评论 -
SQLite 新特性
SQLite 从版本3.25.0开始,在使用over子句的聚合函数中支持了filter子句,但是在使用group by子句的聚合函数中还不支持。事实上,SQLite 是一个非常可靠的数据库,它可以处理 TB 级的数据,但它没有网络层。它不支持的功能在其他一些主要产品中也同样不支持(在聚合中语句中的distinct,width_bucket, respect|ignore nulls和from first|last等语句)。这是一个特有的SQL扩展,即它不是标准SQL的一部分,因此在下面的矩阵中是灰色的。转载 2023-06-26 15:36:40 · 172 阅读 · 0 评论 -
SQL Server Management Studio(SSMS)是干什么的?
SSMS和Navicat都是用于管理数据库的工具,它们具有一些相同之处,例如可以管理数据库实例、可视化查询、备份和恢复数据库等。支持的数据库类型:SSMS仅支持Microsoft SQL Server数据库,而Navicat是一个通用的数据库管理工具,几乎可以管理所有主流的关系型数据库。功能模块:Navicat具有比SSMS更强大和丰富的功能模块,例如数据同步、数据传输、报表生成、自动化任务等功能,可以大大提高数据库管理和开发的效率。SSMS的界面较为复杂,需要一定的学习和熟练掌握才能进行操作。原创 2023-06-15 11:10:52 · 3119 阅读 · 0 评论 -
MySQL和SQL SERVER在使用和语法上的一些不同点
存储过程: MySQL不支持“XML”和“游标”,而SQL Server支持。分区:MySQL的数据分区支持范围和哈希分区,而SQL Server支持分区提供更高的性能和管理。SQL执行计划:MySQL使用基于Cost-based的SQL优化器,而SQL Server使用基于Rule-based的SQL优化器。索引:MySQL的索引是Btree类型的,并且支持自定义函数索引;而SQL Server的索引包括:聚集和非聚集索引、空间索引、分页索引等。触发器:MySQL对触发器的支持有限,而SQL S原创 2023-06-15 11:05:08 · 308 阅读 · 0 评论 -
SQL查询语句中的where、having和on关键词详解
当涉及到SQL数据查询时,“where”、"having"和"on"这三个关键词都是必不可少的组成部分。它们分别用于筛选行、筛选分组和连接表格进行联接查询。虽然它们的作用不同,但是它们的使用方式和语法很相似。"where"关键词用于在查询中筛选行,它可以根据指定的条件选择满足条件的记录。"where"通常出现在"SELECT"语句之后,"FROM"语句之前。"having"关键词用于在分组查询中筛选行,它可以根据指定的条件筛选出满足条件的分组。"having"通常出现在"GROUP BY"语句之后。原创 2023-05-24 08:54:05 · 1521 阅读 · 0 评论 -
MySQL 常用函数全面介绍:聚合函数、日期函数、流程控制函数、加密函数、数学函数和系统函数等
在 MySQL 数据库中,函数是一种非常重要的工具,可以帮助我们完成各种数据处理和计算操作。MySQL 提供了丰富的内置函数,包括聚合函数、日期函数、流程控制函数、加密函数、数学函数和系统函数等多个类型。这些函数能够极大地简化我们的开发工作,提高操作效率。本文将全面介绍 MySQL 中常用的函数,涵盖了聚合函数、日期函数、流程控制函数、加密函数、数学函数和系统函数等多个方面。我们将详细讲解这些函数的用法、应用场景、安全性和效率等方面,帮助读者了解不同类型的函数以及如何根据需求选择合适的函数。原创 2023-05-23 14:53:53 · 327 阅读 · 0 评论 -
当数据统计遇到 COUNT 函数:如何选择最优计数方式?
在MySQL中,COUNT函数用于计算满足特定条件的数据行数,常用于统计查询和分页查询等场景。在使用COUNT函数时,可以使用三种不同的参数:*,1和字段名,它们分别表示不同的计数方式。原创 2023-05-23 13:25:12 · 113 阅读 · 0 评论 -
如何避免常见的SQL错误?——SQL使用过程中需要注意的问题
SQL是一种用于管理关系型数据库的语言,被广泛应用于数据管理和数据分析领域。然而,在使用SQL的过程中,常常会出现一些错误,如语法错误、数据类型不匹配、空值错误、键冲突、连接错误、权限错误、事务处理错误和性能问题等。这些错误可能会导致SQL查询无法正确执行,甚至导致数据损失或安全问题。因此,在使用SQL时,需要注意避免这些常见的错误,确保SQL语句的正确性和安全性。本文将介绍SQL使用过程中需要注意的问题,并提供相应的SQL语句示例,以帮助读者更好地理解和避免SQL错误。原创 2023-05-23 11:03:57 · 228 阅读 · 0 评论 -
【MySQL锁全家桶】深度解析MySQL锁机制
MySQL锁机制是保证数据一致性和完整性的关键。本文将从表锁、页锁、行锁、间隙锁、意向锁、排他锁、共享锁、乐观锁、悲观锁九个方面详细介绍MySQL锁的概念、作用和实现方式。通过本文的学习,你将深入理解MySQL锁机制的实现原理,从而更好地保障数据的正确性和稳定性。赶快来了解一下吧!原创 2023-05-13 23:48:33 · 248 阅读 · 0 评论 -
全面解构MySQL 事务的原理和功能特性
隔离级别优点缺点最大性能可能发生脏读/幻读/不可重复读可以防止脏读可能发生不可重复读/幻读可以防止脏读和不可重复读可能发生幻读可以防止脏读、不可重复读和幻读性能最差READ UNCOMMITTED:最低级别,允许读取未提交事务的数据READ COMMITTED:只能读取已提交事务的数据,默认级别REPEATABLE READ:保证同一事务多次读取同一数据结果一致SERIALIZABLE:最高级别,串行化执行每个事务,最稳定隔离性更强,避免的数据一致性问题越多。原创 2023-05-13 14:08:53 · 285 阅读 · 0 评论 -
Mysql数据库表如何设计?
模型优点缺点应用场景三范式减少数据冗余,提高数据一致性和可维护性需要频繁进行表连接操作,查询效率较低适用于需要高度数据一致性和可维护性的业务场景反范式提高查询效率,减少表连接操作增加数据冗余和存储空间,降低数据一致性适用于需要高查询效率的业务场景,例如电商网站等ER模型简单易懂,能够清晰地描述实体、属性和实体之间的关系设计复杂的关系时,可能需要额外的设计和优化适用于设计复杂的数据结构,需要清晰地描述实体之间的关系的业务场景,例如图书馆管理系统等。原创 2023-05-10 15:49:23 · 3464 阅读 · 0 评论 -
MySQL_存储过程/函数-判断身份证号是否正确
【代码】MySQL_存储过程/函数-判断身份证号是否正确。原创 2023-04-30 16:29:54 · 556 阅读 · 1 评论 -
Mysql中,varchar字段最大长度为什么是65535
在MySQL中,varchar字段的最大长度确实是65535。这个限制是由于MySQL内部存储varchar字段时,使用了2个字节来存储字符串的长度信息。因此,varchar字段的最大长度实际上是2的16次方减1,即65535。在本篇文章中,我们将从以下几个方面来探讨为什么varchar字段的最大长度是65535,并提供具体的代码实现和SQL语句。原创 2023-04-30 16:51:46 · 1635 阅读 · 0 评论 -
Mysql字段类型char和varchar解析
具体来说,char类型的字符串长度是固定的,如果存储的字符串长度小于定义的长度,MySQL会在字符串末尾自动添加空格字符。在这个例子中,name_char是一个长度为20的char类型的字段,name_varchar是一个长度为20的varchar类型的字段。但是char类型会浪费存储空间,因为如果存储的字符串长度小于定义的长度,MySQL会在字符串末尾自动添加空格字符,而这些空格字符是浪费存储空间的。char类型的字符串长度是固定的,而varchar类型的字符串长度是可变的。原创 2023-04-30 16:45:37 · 692 阅读 · 0 评论 -
Mysql中group by和distinct效率的比较
在Mysql中,group by和distinct两者都可以用于去除重复数据。但是它们的实现方式不同,因此在效率上也存在差异。group by的执行速度快于distinct是在较老版本的Mysql中才存在的现象,而在较新版本中,distinct的执行速度已经赶上并超过了group by。在实际开发中,我们需要根据具体的需求选择适合的去重方法,以提高查询效率和性能。原创 2023-04-27 18:26:35 · 967 阅读 · 1 评论 -
Mysql中的锁机制
MySQL中有多种锁机制,包括共享锁和排他锁,用于控制并发访问和保证数据的一致性。下面我会简单介绍一下MySQL中的锁机制。原创 2023-04-30 22:59:57 · 112 阅读 · 0 评论