数据库索引:是好事、坏事还是浪费时间?

2024-04-30

这里通常建议添加索引作为性能问题的补救措施。

(我只讨论读取和查询,我们都知道索引会使写入速度变慢)。

多年来,我在 DB2 和 MSSQL 上多次尝试过这种补救措施,但结果总是令人失望。

我的发现是,无论索引会让事情变得更好是多么“明显”,事实证明查询优化器更聪明,而我巧妙选择的索引几乎总是让事情变得更糟。

我应该指出,我的经验主要与小表(

谁能提供一些有关索引选择的实用指南?

正确的答案是一个建议列表,例如:

  • 从不/总是索引少于/多于 NNNN 条记录的表
  • 从不/总是考虑多字段键上的索引
  • 从不/总是使用聚集索引
  • 从不/总是在单个表上使用超过 NNN 索引
  • 当[我非常想了解一些神奇的条件]时,永远不要/总是添加索引

理想情况下,答案会给出一些有启发性的例子。


索引有点像化疗......太多,它会杀死你......太少,你会死......做错了,你会死。你必须知道它的程度、频率和类型,才能让它不致杀死你。

你的硬件、平台、环境、负载都会发挥作用。所以来回答你的问题..

是的,可能有时。

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

数据库索引:是好事、坏事还是浪费时间? 的相关文章

  • 通过Java从MySQL中获取大量记录

    有一个 MySQL 表 服务器上的用户 它有 28 行和 100 万条记录 也可能会增加 我想从这个表中获取所有行 对它们进行一些操作 然后将它们添加到 MongoDB 中 我知道通过简单的 从用户中选择 操作来检索这些记录将花费大量时间
  • 计算包含字母/数字的行数

    我想要实现的目标很简单 但是解释起来有点困难 我不知道在 postgres 中这是否真的可能 我处于相当基础的水平 SELECT FROM WHERE LEFT JOIN ON HAVING 等等基本的东西 我正在尝试计算包含特定字母 数字
  • 手动更改postgresql中查询的执行计划?

    是否可以在postgresql中手动更改执行计划的操作顺序 例如 如果我总是想在过滤之前进行排序操作 尽管这在 postgresql 的正常使用中没有意义 是否可以通过例如手动强制执行该操作改变运营的内部成本 如果我实现自己的功能呢 是否可
  • SQL命令文本到DataSet的直接方法

    如果我有 sql 命令 获取数据集的最直接途径是什么 string sqlCommand SELECT FROM TABLE string connectionString blahblah DataSet GetDataSet sqlCo
  • sql server 2008 对 exec 语句的限制

    我只需要仔细检查 t sql 中的 EXEC 命令是否有字符限制 如果我有一个带有 varchar max 的变量并使用 EXEC 执行命令 你认为这样可以吗 thanks 应该没问题 根据这篇 MSDN 文章 http msdn micr
  • 如何搜索表中的所有列?

    如何在 SQL Server 中搜索表的所有列 SELECT FROM yourtable WHERE val IN field1 field2 field3 field4 如果您正在寻找精确的全场比赛 如果你正在寻找子字符串匹配 你将不得
  • 如何将彼此“接近”的纬度/经度点分组?

    我有一个用户提交的纬度 经度点的数据库 并且正在尝试将 接近 点分组在一起 接近 是相对的 但目前看来约为 500 英尺 起初 我似乎只能按前 3 个小数位具有相同纬度 经度的行进行分组 大约是一个 300x300 的盒子 了解当您远离赤道
  • 删除重复的行并需要在mysql中保留所有行中的一个[重复]

    这个问题在这里已经有答案了 我想删除基于两列的重复行 但需要保留所有行 1 行 重复行可以多于两行 例如 ID NAME PHONE 1 NIL 1234 2 NIL 1234 3 NIL 1234 4 MES 5989 我想从上面 3 行
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • 如何在 PostgreSQL 中使用条件和子查询创建唯一索引?

    我使用 PGSQL 并尝试添加下面的索引 CREATE UNIQUE INDEX fk client ON user client fk client WHERE fk client NOT IN SELECT fk client FROM
  • 最近邻居的 Postgis SQL

    我正在尝试计算最近的邻居 为此 我需要传递一个参数来限制与邻居的最大距离 例如 半径1000米内最近的邻居是哪些 我做了以下事情 我用数据创建了表 id name latitude longitude 之后 我执行了以下查询 SELECT
  • MySQL LIKE %string% 不够宽容。我还有什么可以用的吗?

    我有一位客户询问他们的搜索是否可以搜索公司名称 这些名称可以根据用户输入以多种格式进行搜索 例如数据库中存储的公司是 A J R Kelly Ltd 如果用户搜索 一个 J R Kelly 被发现 使用
  • 通过 SQLAlchemy 获取随机行

    如何使用 SQLAlchemy 从表中选择一个或多个随机行 这在很大程度上是一个特定于数据库的问题 我知道 PostgreSQL SQLite MySQL 和 Oracle 具有通过随机函数排序的能力 因此您可以在 SQLAlchemy 中
  • 如何对多行的一列值求和?

    我有这个表 我想添加几行的 change 列的值 或者更准确地说 从 ne 值为零的行到 ne 值为零的下一行 不是第二个本身 任何答案将不胜感激 rn date ne change 0 2008 12 07 0 10330848398 1
  • 如何使用 SQL 通过表示多级订单的 varchar 字段正确排序?

    我不太喜欢数据库 我发现在查询上出现以下问题SQL服务器数据库旧的遗留应用程序的 我声明不幸的是我无法更改数据库结构 字段类型 这非常难看 我有以下情况 SELECT Sottocategoria IdSottocategoria IdCa
  • 如何进行数据透视并计算列平均值

    我承认这是迄今为止我必须面对的最复杂的 SQL 语句之一 我在这件事上碰壁了 我希望有人能帮我一把 我在数据库中有这张表 Item ActiveTime sec DateTime 1 10 2013 06 03 17 34 22 gt Mo
  • 使用 .NET 中的类型化数据集将 SQL 参数传递给 IN() 子句

    首先道歉 因为该网站上有类似的问题 但没有一个直接回答这个问题 我在 VS 2010 中使用类型化数据集 我在数据集中创建一个 TableAdapter 查询如下 SELECT from Table WHERE ID IN IDs 现在如果
  • 如何引用下一行的数据?

    我正在 PostgreSQL 9 2 中编写一个函数 对于股票价格和日期的表 我想计算每个条目较前一天的百分比变化 对于最早一天的数据 不会有前一天 因此该条目可以简单地为 Nil 我知道WITH声明可能不应该高于IF陈述 到目前为止 这就
  • 在 PostgreSql 中计算百分比

    例如我有一个这样的表 string adm A 2 A 1 B 2 A 1 C 1 A 2 通过 SQL 查询 我想要这样的结果 string perc adm A 50 B 100 C 0 我想要每个字符串中数字 2 出现的百分比 我可以
  • 没有为 1 个或多个必需参数给出值。更新SQL

    我正在编写一个程序 当用户在列表视图上选择记录时 该程序会更新密码或积分 我收到错误 没有为 1 个或多个必需参数给出值 我不知道如何纠正 我是否遗漏了一些明显的东西 Dim sql As String UPDATE Users SET P

随机推荐

  • R包:写入内部数据,但不是一次全部写入

    我正在使用 R 包usethis devtools 该包中有一些我想保留在内部的对象 只是为了避免混乱 我使用的结构是根据源在不同文件中创建对象 所有这些都在我的data raw文件夹 例如 文件make laus codes R准备两个来
  • 使用 Spring MVC 4.0 Multipart 上传图像

    我正在尝试使用下面的代码在线上传图像 但是 由于某种原因 图像似乎没有在图像文件夹中创建 不确定 我在这里做错了什么 RequestMapping value add method RequestMethod POST public Str
  • 使用R中usmap包中的plot_usmap在同一张地图上绘制州和县边界

    我想创建一张显示州和县边界 即不同颜色的州边界 的美国地图 我通常使用导入或使用的形状文件来执行此操作ggplot2 s map data功能 然而 我面临三个障碍 1 我无法安装gdal and geos在我的计算环境中 以便排除使用任何
  • Xcode 项目文件未出现在项目导航器中

    这里有一个奇怪的问题 我的项目的 Swift 文件 Main Storyboard 附加图像 委托等文件在 Xcodes Project Navigator 中都丢失了 真正奇怪的是 项目构建得很好 我也可以从主编辑器窗口的顶部选择它们 即
  • 为什么 i2c_smbus 函数不可用? (I2C——嵌入式Linux)

    有很多参考使用i2c smbus 开发嵌入式 Linux 软件时在 I2C 总线上进行通信的函数 什么时候i2c smbus函数如i2c smbus read word data在软件项目中引用了 ARM8 处理器错误 例如 i2c smb
  • 在 Mac OS X 10.7.4 上使用 OpenCL 禁用 Nvidia 看门狗

    我有一个 OpenCL 程序 对于小问题运行良好 但是当运行较大的问题超过 Nvidia 硬件上运行内核的 8 10 秒时间限制时 虽然我没有将显示器连接到我正在计算的 GPU Nvidia GTX580 上 但一旦内核运行大约 8 10
  • 用正则表达式重写YAML frontmatter

    我想使用 Jekyll 将我的 WordPress 网站转换为 GitHub 上的静态网站 我使用了一个插件 将我的 62 篇帖子以 Markdown 形式导出到 GitHub 我现在在每个文件的开头都有这些带有额外 frontmatter
  • 如果通过 SQL 查询结果没有找到记录,则应为 0

    我正在使用火鸟 我需要以下结果 但我没有得到我需要的结果 我尝试了以下查询 SELECT CASE EXTRACT MONTH FROM pd Date WHEN 1 THEN January WHEN 2 THEN February WH
  • MVC 中的外键注释

    我有两张桌子 State StateID int StateName string City CityID int StateID int CityName string 我正在使用代码优先方法开发 MVC4 代码 我正在使用State a
  • 剑道网格服务器端过滤并且不工作

    我正在使用 Kendo 网格 具有服务器端过滤 排序和分页功能 这是我初始化网格的代码 在此代码中 服务器端分页和虚拟滚动正常工作 但过滤和短路不起作用 在任何请求中 我都会得到这个 请求参数的类型 HttpPost public Json
  • 数组奇偶排序

    我有一个数组 其中有一些数字 现在我想对单独的数组中的偶数进行排序 对单独的奇数进行排序 有没有 API 可以做到这一点 我试过这样 int array sort 5 12 3 21 8 7 19 102 201 int even sort
  • 如何删除 XML::Simple 输出中的 标记?

    我正在使用 Perl 创建一个 XML 文件 XML 简单 http search cpan org dist XML Simple模块 我成功创建了 XML 文件 但问题是我遇到了
  • Cabal 在 NixOS 上构建时找不到外部库

    我正在尝试使用 cabal2nix 在 NixOS 上构建一个内部 Haskell 项目 它包装 并因此依赖 一个外部库 在 Ubuntu 上可以通过以下方式构建 wget设置源 然后运行make make install ldconfig
  • Python 记录器应该作为参数传递吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正在开发的 Python 应用程序需要一个记录器 一位同事认为应该在每个使用它的类中创建和配置记录器 我的观点是 它应该在应用程序启动时创建
  • Excel VBA - 将 .xls 附加到文件名以打开文件

    我有代码可以打开带有可变日期的文件 如下所示 如果不在输入框中输入 m d y xls 此代码将无法运行 我只想在输入框中输入 m d y 请看一下并让我知道我缺少什么 谢谢 Dim wbkOpen As Workbook Dim strF
  • 如何使用 spring-test-junit5 进行嵌套测试?

    我一直在玩JUnit 5 http junit org junit5 and 弹簧测试junit5 https github com sbrannen spring test junit5 然后我尝试使用嵌套测试 http junit or
  • Firebase 云功能 - Stripe Connect Webhook 未触发

    我正在尝试设置我的 stripe webhook 以便在创建 更新 Stripe Connect 帐户或执行任何操作时自动调用 Firebase 云函数 仅当我手动转到 Stripe 仪表板 gt Webhooks 并点击 发送测试 Web
  • 在给定时间后停止 java 中的线程 - 不起作用

    我有一个复杂的函数 优化 可能会进入循环或只是花费太多时间 并且允许的时间由用户设置 因此 我试图在单独的线程中运行该函数 并在超过最大时间时停止它 我使用类似于下面的代码 但它不起作用 所以 int timeMax 2 time in m
  • 如何处理WPF中Grid Splitter生成的事件?

    我想要一个事件处理程序来处理移动网格拆分器时的事件 我不确定是否有一个 如果没有 我想我可以在行大小更改时生成一个事件 Thanks 您可以更改行的大小 但 GridSplitter 本身是一个 Thumb 因此有自己的事件 例如 Drag
  • 数据库索引:是好事、坏事还是浪费时间?

    这里通常建议添加索引作为性能问题的补救措施 我只讨论读取和查询 我们都知道索引会使写入速度变慢 多年来 我在 DB2 和 MSSQL 上多次尝试过这种补救措施 但结果总是令人失望 我的发现是 无论索引会让事情变得更好是多么 明显 事实证明查