MySQL
文章平均质量分 83
java编程小帅
学如逆水行舟,不进则退
展开
-
Mysql(9)优化数据库结构
目录1、优化数据大小Table ColumnsRow FormatIndexesJoinsNormalization2、优化数据类型优化数值(Numeric)数据优化字符和字符串类型针对 BLOB 类型进行优化3、表列数和行大小的限制Column Count LimitsRow Size LimitsRow Size Limit Examples1、优化数据大小设计我们的表以最小化它们在磁盘上的空间。 这可以通过减少写入磁盘和从磁盘读取的数原创 2022-02-08 17:56:12 · 1015 阅读 · 1 评论 -
Mysql(8)如何使用索引
索引用于快速查找具有特定列值的行。 如果没有索引,MySQL 必须从第一行开始,然后读取整个表以查找相关行。 table越大,成本越高。 如果表有相关列的索引,MySQL 可以快速确定要在数据文件中间查找的位置,而无需查看所有数据。 这比顺序读取每一行要快得多。大多数 MySQL 索引(PRIMARY KEY、UNIQUE、INDEX 和 FULLTEXT)都存储在 B 树中。 例外:空间数据类型的索引使用 R-trees; MEMORY 表也支持hash索引; InnoDB 对 FULLTEXT 索引原创 2022-02-08 15:36:47 · 801 阅读 · 0 评论 -
Mysql(7)Limit 查询优化
如果我们只需要结果集中指定数量的行,请在查询中使用 LIMIT 子句,而不是获取整个结果集并丢弃额外的数据。MySQL 有时会优化具有 LIMIT row_count 子句且没有 HAVING 子句的查询:如果使用 LIMIT 只选择几行,MySQL 在某些情况下会使用索引,而通常它更愿意进行全表扫描。 如果将 LIMIT row_count 与 ORDER BY 结合使用,MySQL 会在找到排序结果的第一个 row_count 行后立即停止排序,而不是对整个结果进行排序。 如果使用索引进行原创 2022-02-08 14:34:12 · 970 阅读 · 0 评论 -
Mysql(6)Group By优化
满足 GROUP BY 子句的最通用方法是扫描整个表并创建一个新的临时表,其中每个组的所有行都是连续的,然后使用此临时表来发现组并应用聚合函数(如果有)。 在某些情况下,MySQL 能够做得比这更好,并通过使用索引访问来避免创建临时表。为 GROUP BY 使用索引的最重要的先决条件是所有 GROUP BY 列都引用来自同一索引的属性,并且索引按顺序存储其键(例如,对于 BTREE 索引)。 临时表的使用是否可以被索引访问替代还取决于查询中使用了索引的哪些部分、为这些部分指定的条件以及所选的聚合函数。原创 2022-02-08 14:09:28 · 2014 阅读 · 0 评论 -
Mysql(5)Order By优化
使用索引来满足 ORDER BY在某些情况下,MySQL 可能会使用索引来满足 ORDER BY 子句并避免执行文件排序操作中涉及的额外排序。即使 ORDER BY 与索引不完全匹配,也可以使用索引,只要索引的所有未使用部分和所有额外的 ORDER BY 列都是 WHERE 子句中的常量。 如果索引不包含查询访问的所有列,则仅当索引访问比其他访问方法便宜时才使用索引。假设 (key_part1, key_part2) 上有索引,以下查询可能会使用该索引来解析 ORDER BY 部分。 优化器是否原创 2022-01-27 14:12:07 · 1570 阅读 · 0 评论 -
Mysql(4)index合并优化
Index Merge 访问方法检索具有多个范围扫描的行并将其结果合并为一个。 此访问方法仅合并来自单个表的索引扫描,而不是跨多个表的扫描。 合并可以生成其底层扫描的并集、交集或交集并集。SELECT * FROM tbl_name WHERE key1 = 10 OR key2 = 20;SELECT * FROM tbl_name WHERE (key1 = 10 OR key2 = 20) AND non_key = 30;SELECT * FROM t1, t2 WHERE (原创 2022-01-26 11:33:07 · 1154 阅读 · 0 评论 -
Mysql(3)Range优化
范围访问方法使用单个索引来检索包含在一个或多个索引值间隔内的表行的子集。 它可用于单部分或多部分索引。 以下部分描述了优化器使用范围访问的条件。目录单部分索引的范围访问方法多部分索引的范围访问方法多值比较的等式范围优化行构造函数表达式的范围优化范围优化的限制内存使用单部分索引的范围访问方法对于单部分索引,索引值区间可以方便地用 WHERE 子句中的相应条件表示,表示为范围条件而不是“区间”。单部分索引的范围条件定义如下:对于 BTREE 和 HASH 索引,在使用 =原创 2022-01-26 11:03:47 · 2339 阅读 · 0 评论 -
Mysql(2)WHERE 子句优化
本节讨论可用于处理 WHERE 子句的优化。 这些示例使用 SELECT 语句,但相同的优化适用于 DELETE 和 UPDATE 语句中的 WHERE 子句。我们可能很想重写查询以使算术运算更快,同时牺牲可读性。 因为 MySQL 会自动进行类似的优化,所以我们通常可以避免这项工作,并将查询保留在更易于理解和维护的形式中。 MySQL执行的一些优化如下:删除不必要的括号: ((a AND b) AND c OR (((a AND b) AND (c AND d))))-> (a A原创 2022-01-20 20:14:43 · 687 阅读 · 0 评论 -
Mysql (1)优化概述
数据库性能取决于数据库级别的几个因素,例如表、查询和配置设置。 这些软件结构会导致硬件级别的 CPU 和 I/O 操作,我们必须将其最小化并尽可能提高效率。 在处理数据库性能时,首先要学习软件方面的高级规则和指南,并使用挂钟时间来衡量性能。 当我们成为专家时,我们会更多地了解内部发生的事情,并开始测量诸如 CPU 周期和 I/O 操作之类的东西。典型用户的目标是从现有的软件和硬件配置中获得最佳的数据库性能。 高级用户寻找机会改进 MySQL 软件本身,或开发自己的存储引擎和硬件设备以扩展 MySQL 生原创 2022-01-20 19:54:17 · 810 阅读 · 0 评论