如何针对特定查询优化表?

2023-11-22

  1. 您使用哪些模式来确定频繁查询?
  2. 如何选择优化因素?
  3. 人们可以做出哪些类型的改变?

这是一个很好的问题,虽然相当广泛(但也并不更糟)。
如果我理解你的意思,那么你是在问如何从头开始解决优化问题。

首先要问的问题是:“是否存在性能问题?"
如果没有问题,那么就完成了。这种情况经常发生。好的。

另一方面...

确定频繁查询

Logging将为您提供经常查询的信息。
如果您使用某种数据访问层,那么添加代码来记录所有查询可能很简单。
记录查询的执行时间以及每个查询需要多长时间也是一个好主意。这可以让您了解问题出在哪里。
Also, 询问用户哪些部分惹恼了他们。如果缓慢的响应不会让用户烦恼,那就没关系。

选择优化因素?

(我可能误解了问题的这一部分) 您正在寻找查询/响应时间中的任何模式。
这些通常是对大型表的查询或在单个查询中连接多个表的查询。 ...但是如果您记录响应时间,您就可以受到这些时间的指导。

一个人可以做出哪些类型的改变?

您特别询问有关优化表格的问题。
以下是您可以寻找的一些内容:

  • 非规范化。这会将多个表合并为一个更宽的表,因此您可以只读取一张表,而不用将多个表连接在一起。这是一种非常常见且强大的技术。注意。我建议保留原始的规范化表并另外构建非规范化表 - 这样,您就不会扔掉任何东西。如何保持最新是另一个问题。您可以在基础表上使用触发器,或定期运行刷新过程。
  • Normalisation. This is not often considered to be an optimisation process, but it is in 2 cases:
    • 更新。标准化使更新速度更快,因为每次更新都是最小的(您正在更新最小的 - 就列和行而言 - 可能的表。这几乎是标准化的定义。
    • 查询非规范化表以获取存在于小得多(行数更少)的表上的信息可能会导致问题。在这种情况下,存储规范化表和非规范化表(见上文)。
  • 水平分区。这意味着通过将一些行放入另一个相同的表中来缩小表。一个常见的用例是将本月的所有行都包含在表中本月销售,以及表中所有较旧的行OldSales,其中两个表具有相同的架构。如果大多数查询都是针对最近的数据,则此策略可能意味着 99% 的查询仅查看 1% 的数据 - 这是一个巨大的性能提升。
  • 垂直分区。这是从表中删除字段并将它们放入一个新表中,该新表通过主键连接回主表。这对于非常宽的表(例如具有数十个字段)非常有用,并且如果表填充稀疏,则可能会有所帮助。
  • Indeces。我不确定你的问题是否涵盖这些,但是关于 indeces 的使用还有很多其他答案。查找索引案例的一个好方法是:查找慢速查询。查看查询计划并找到表扫描。对该表上的字段建立索引,以便消除表扫描。如果需要,我可以就此写更多内容 - 发表评论。

你可能还喜欢我的帖子.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何针对特定查询优化表? 的相关文章

  • 对于数据库来说,选择正确的数据类型会影响性能吗?

    如果是这样 为什么 我的意思是 tinyint 的搜索速度比 int 快吗 如果是这样 性能上的实际差异是什么 是的 根据数据类型 它确实有所不同 int vs tinyint不会在速度上产生明显的差异 但会在数据大小上产生差异 假设tin
  • 使用 Spark DataFrame 获取组后所有组的 TopN

    我有一个 Spark SQL DataFrame user1 item1 rating1 user1 item2 rating2 user1 item3 rating3 user2 item1 rating4 如何按用户分组然后返回TopN
  • 如何在SSRS中的表上创建热图?

    如何在 SSRS 中创建这样的内容 颜色将根据行中的值 承销商 从红色变为绿色 所有这些都在一个组中 您可以通过右键单击各个单元格并根据表达式设置填充颜色来完成此操作 In the Image below I ve mistakingly
  • 获取家庭成员

    假设以下家庭 其构建架构是 create table PersonConn child int parent int insert into PersonConn values 1 2 insert into PersonConn valu
  • SPARK SQL - 当时的情况

    我是 SPARK SQL 的新手 SPARK SQL 中是否有相当于 CASE WHEN CONDITION THEN 0 ELSE 1 END 的内容 select case when 1 1 then 1 else 0 end from
  • 根据表sql中的行替换字符串中的字符

    我需要用一些映射的字符替换字符串中的字符列表 我有一个表 dbo CharacterMappings 有 2 列 CharacterToFilter 和 ReplacementCharacter 假设这个表中有3条记录 Filter Rep
  • SQLite HAVING 比较错误

    我有一个测试 SQLite 表 用于存储带有值的报告数据 CREATE TABLE IF NOT EXISTS test fact daily revenue date TEXT revenue NUMERIC product TEXT I
  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 当所有维度值都具有 100% 重要性时处理多对多维度

    我至少会尽力保持简洁 假设我们正在跟踪一段时间内的账户余额 所以我们的事实表将包含诸如 账户余额情况表 FK 账户ID FK 日期ID Balance 显然你有一个账户维度表 and a 日期维度表 所以现在我们可以轻松地过滤帐户或日期 或
  • 如何 md5 所有列(无论类型如何)

    我想创建一个 sql 查询 或 plpgsql 它将 md5 所有给定的行 无论类型如何 但是 在下面 如果 1 为空 则哈希为空 UPDATE thetable SET hash md5 accountid accounttype cre
  • SELECT 语句会受到 SQL 注入攻击吗?

    实际上有2个问题 我知道我必须尽可能多地使用存储过程 但我想知道以下内容 A 我可以从 SELECT 语句 例如 Select from MyTable 获得 SQL 注入攻击吗 B 另外 当我在 ASP NET 中使用 SQLDataSo
  • 将表数据从一个 SQL Server 导出到另一台 SQL Server

    我有两个 SQL Server 都是 2005 版本 我想将多个表从一个表迁移到另一个表 我努力了 在源服务器上 我右键单击数据库 选择Tasks Generate scripts 问题是在下面Table View options没有Scr
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 使用间隔阈值对不同的连续时间戳记录进行分组

    我有一系列间歇性间隔的带有时间戳的 GPS 坐标 我正在使用 PostGIS 将它们渲染到地图画布上 为了渲染它们 需要使用 PostGIS 中的 ST MakeLine 聚合函数将点聚合成线 从而在地图上留下 GPS 数据丢失的间隙 数据
  • 在 postgres 查询中使用列表

    我有一个动态列表 list a b c d 所以长度可能会改变 我想在查询中比较这些列表值 select from student where name in all the list values 我想将列表值传递到此查询中 我怎样才能做
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希
  • SQL Server 上的语法错误

    这可能是一个愚蠢的语法错误 但我只是继续阅读我的程序 但我无法弄清楚我的错误在哪里 消息 156 第 15 级 状态 1 第 41 行关键字附近的语法不正确 为了 这是我的代码 alter procedure LockReservation
  • MS ACCESS 计数/求和行数,不重复

    我有下表 我需要计算总行数而不包括任何重复记录 CustomerID test1 test1 test2 test3 test4 test4 如您所见 总行数为 6 但有两个 test1 和两个 test4 我希望查询返回 4 IOW 我想
  • 使用 postgres 和 node js 在单个语句中执行多个查询

    我需要在像这样的单个语句中执行插入和删除查询 INSERT INTO COMPANY ID NAME VALUES 1 Paul DELETE FROM COMPANY WHERE ID 12 这是我用于执行查询的 node js 代码 p

随机推荐

  • clang 的 include 优先级发生了什么?

    我的命令 usr bin c fPIC I Users me project include I usr local include opencv I usr local include I opt local include std c
  • 如何从日历中获取所有事件(Swift)

    我对 Swift 有点陌生 但真的很感兴趣 我想获取我存储在名为 工作 的日历中的所有事件 并将它们显示在表视图中 我一直在寻找这样的问题 但那里显示的代码似乎有点旧并且不能真正工作 我怎么做 tableView 应该能够显示标题 开始日期
  • 比较 object.Value = Null 不会产生预期结果

    所以我有一个令人沮丧的简单问题 但我似乎无法解决 If Me Bank Credit Value Null Then Me Bank Credit Value 0 End If 基本上 我有一个未绑定的框 用户可以在其中输入数据 然后单击按
  • toDateString() 减少我的日期

    对于以下代码 var d new Date 2013 07 01 console log d toDateString 它输出 Sun Jun 30 2013 比输入的时间少一天 物体发生了什么 实际存储的日期是什么 日期被解析为 UTC
  • 为什么模型绑定在我的 POST 操作方法中不起作用?

    我对 MVC 有一个非常奇怪的问题 我的模型总是提交为空 这可能真的很简单 但我就是找不到问题所在 我的模型看起来像这样 public class LoginModel public string Username public strin
  • 如何将 HiveQL 查询的结果输出到 CSV?

    我们希望将 Hive 查询的结果放入 CSV 文件中 我认为命令应该如下所示 insert overwrite directory home output csv select books from table 当我运行它时 它说它已成功完
  • 如何使用自定义IPasswordHasher?

    我实现了 IPasswordHasher public class MyPasswordHasher IPasswordHasher public string HashPassword string password using SHA2
  • Android Studio 像素化预览

    将 Android studio 更新到版本 3 1 2 后 出现预览图像像素化 模糊的问题 谁能帮我解决这个问题吗 这就是图像的渲染方式 我在 Android Studio 3 3 中遇到了同样的问题 但幸运的是我已经找到了解决方案 您必
  • C# 中两个列表相交

    我有两个清单 List
  • 是如何实现的?

    C 没有 据我所知 重载或模板 对吧 那么 在普通的 C 语言中如何存在一组与类型无关的同名函数呢 通常的编译时技巧会涉及一大堆宏 不是吗 关于它在 GCC 中如何工作有一个很好的解释here 另外 如果有人能解决中等难度的练习 我很想知道
  • 更快的排列生成器

    我为 Scala 列表编写了一个排列生成器 它生成给定列表的所有排列 到目前为止 我已经得到以下基于这个 Haskell 实现 我认为它比我尝试过的其他几个选项更有效 有什么方法可以提高效率 或者我已经涵盖了所有基础吗 For each e
  • 通过Curl/PHP查询API

    我正在查看 Parse com REST API 并使用 PHP 使用的 Curl 包装器进行调用 原始 Curl 代码 有效 curl X GET H X Parse Application Id myApplicationID H X
  • Struts2 文件上传最大大小

    我需要上传最多 10 MB 的文件 我使用了以下内容 在我的 struts xml 中 我配置如下
  • 让 VB6 显示哪个组件没有安装设计时许可证

    我继承了一个我正在尝试 制作 的 VB6 项目 构建在 制作 EXE 步骤中失败 并出现许可错误 License information for this component not found You do not have an app
  • C# 代码在后台以静默模式运行我的 installer.exe 文件,[重复]

    这个问题在这里已经有答案了 我有这个 C 代码 string desktopPath Environment GetFolderPath Environment SpecialFolder Desktop ProcessStartInfo
  • mysql中的同步存储过程执行

    我有一个存储过程mysql也就是说 执行需要同步的任务 这样 如果两个应用程序调用存储过程 则只有一个应用程序可以访问一段代码来执行该任务 而另一个应用程序将被阻止 直到第一个应用程序完成任务 DELIMITER CREATE PROCED
  • Visual C++:#include 来自同一解决方案中其他项目的文件

    我正在使用 Visual C 开发游戏 我在单独的项目中有一些组件 并设置了项目依赖项 如何 include 来自不同项目的头文件 我不知道如何在另一个项目中使用一个项目中的类 编译器的设置 在您想要 include 头文件的项目中anot
  • 如何在 Scala 中使用正则表达式进行模式匹配?

    我希望能够找到单词的第一个字母与组中的一个字母 例如 ABC 之间的匹配项 在伪代码中 这可能看起来像 case Process word gt word firstLetter match case a c A C gt case gt
  • 在 R markdown 中使用内联带空格的变量名称

    我怎样才能包含内联R引用包含空格或其他异常字符的变量名的代码 实际用例是Pr gt F 反引号是解决方案简单地R脚本 但当代码内联在 Markdown 文档中时它们似乎不起作用 这是一个例子 r df lt data frame mydat
  • 如何针对特定查询优化表?

    您使用哪些模式来确定频繁查询 如何选择优化因素 人们可以做出哪些类型的改变 这是一个很好的问题 虽然相当广泛 但也并不更糟 如果我理解你的意思 那么你是在问如何从头开始解决优化问题 首先要问的问题是 是否存在性能问题 如果没有问题 那么就完