针对特定查找优化的索引

     2023-04-14     210

关键词:

【中文标题】针对特定查找优化的索引【英文标题】:Index optimised for specific lookup 【发布时间】:2012-08-17 08:21:44 【问题描述】:

我有一个表(可能会变大,大约数百万行),我会定期在其上执行查询 SELECT * from table WHERE somefield = 20,并且我希望此查询能够快速运行。在任何时候,我都希望这个查询在可能的数百万中最多返回 10 行,对于这个特定的值 20(不保证任何其他值)。索引这个的正确方法是什么?仅在某个字段上放置索引并确保统计信息大致是最新的就足够了吗?或者还有其他我可以尝试优化的技巧吗?

【问题讨论】:

我已投票决定将其移至 dba.stackexchange.com 【参考方案1】:

此查询的理想索引单独应该是具有键列somefield 并包含表中所有其他列的列的索引(通过使索引聚簇或具有INCLUDE 选项)。

这将允许直接查找值并避免书签查找的需要。

但是包含所有这些列的 NCI 的维护开销会影响数据修改操作,您可能更喜欢在不同的键列上定义 CI 以使其他查询受益或避免碎片

因此,出于这个原因,您可能更愿意单独在 somefield 上定义 NCI,并使用 10 个书签查找。这是一个平衡的行为。

编辑。实际上,如果您对优化 somefield = 20 的查询感兴趣,那么您可以在该值上创建一个 filtered index。然后我可能会include 该索引定义中的所有列。

【讨论】:

过滤后的索引,这似乎正是我想要的【参考方案2】:

仅在某个字段上放置索引并确保统计信息大致是最新的就足够了吗?

是的,很简单。确保 somefield 是正确的类型(即 int)。如果 somefield 需要包含文本,您可以做更多的事情,否则正常索引就可以了。

如果您不需要通过不使用 SELECT * 返回的每个字段(您可能不需要某个字段,因为您已经知道它是什么)。

【讨论】:

【参考方案3】:

是的,您想在某个字段上添加索引。

如果你不做其他查询,那么你可能想把它变成一个聚集索引,但是没有上下文,很难下定论。

【讨论】:

mysql单列索引多列索引的使用

...  数据库的索引可以加快查询速度,原因是索引使用特定的数据结构(B-Tree)对特定的列额外组织存放,加快存储引擎(索引是存储引擎实现)查找记录的速度。      索引优化是数据库优化的最重要手段。       如果查询... 查看详情

mysql---索引优化

...左前缀“原则。5.全文索引:fulltext 仅可用于MyISAM表,针对较大的数据,生成全文索引很耗时耗空间。第一类是myisam存储引擎使用的叫做b-tree结构,第二类是innodb存储引擎使用的叫做聚簇结构(也是一种b-tree)。如下图:注意... 查看详情

浅谈mysql索引优化分析

...数据结构」。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数 查看详情

SQL 查询的仅使用书签查找选项的索引查找?

...【发布时间】:2009-02-2421:06:13【问题描述】:我正在优化针对遗留系统中非常宽的表的SQL查询。由于各种原因,我目前无法缩小表格范围。我的查询运行缓慢,因为它在我创建的索引上执行索引查找,然后使用书签查找来查找它... 查看详情

索引优化之:创建填充和查找

在做性能优化时,经常需要创建索引,维护索引,或重建,或重组;在创建索引时,索引的数据页有时需要填充满,有时需要预留一定比例的空闲空间;在分析查询的执行计划之后,推荐创建覆盖索引(coveringindex),优化查询... 查看详情

09-索引优化分析(代码片段)

...数据的数据结构。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在 查看详情

如何针对特定目标文件大小优化图像大小?

】如何针对特定目标文件大小优化图像大小?【英文标题】:HowcanIoptimizeUIImageresizesforaspecifictargetfilesize?【发布时间】:2012-06-2501:34:57【问题描述】:对于任何给定的文件数据大小,我希望能够调整(或压缩)UIImage的大小以适应... 查看详情

在具有特定键的特定值的数组中查找对象的索引[重复]

】在具有特定键的特定值的数组中查找对象的索引[重复]【英文标题】:Findindexofobjectinarraywithspecificvalueforspecifickey[duplicate]【发布时间】:2018-12-0502:26:02【问题描述】:我有一个对象,我需要在其中找到一个特定的项目索引号。... 查看详情

针对特定 EF Core 查询优化 UNKNOWN

】针对特定EFCore查询优化UNKNOWN【英文标题】:OPTIMIZEFORUNKNOWNonspecificEFCorequery【发布时间】:2021-01-3020:16:47【问题描述】:我有一个使用EFCore3.1在.NETFramework上运行的webjob项目。Webjob处理来自Azure服务总线的消息并将它们保存到Azure... 查看详情

在数组中查找特定字符串的所有索引的更快方法

】在数组中查找特定字符串的所有索引的更快方法【英文标题】:Fasterwayoffindingallindicesofspecificstringinanarray【发布时间】:2018-12-2305:30:28【问题描述】:下面的代码用于查找字符串的所有索引,这些索引可能在数组中只出现一次... 查看详情

mysql根据索引去修改数据,会走索引吗

...决定是全表扫描还是索引查找,用效率较高的一种方式。针对索引字段的唯一性不高的情况下(索引的"区分度"低),优化器可能会选择全表扫描,而不是走索引。这可能是因为等值查询符合条件的记录太多了,导致了mys... 查看详情

在python列表中查找特定列的元素的索引

】在python列表中查找特定列的元素的索引【英文标题】:Findingtheindexofanelementofspecificcolumninpythonlist【发布时间】:2021-07-1617:06:05【问题描述】:table=[[\'\',\'n\',\'+\',\'*\',\'(\',\')\',\'$\'],[\'E\',1,-1,-1,1,-1,-1],[\'R\',-1,3,2,-1,2,2],[\'T\',4, 查看详情

在特定元素上查找排序数组的范围索引

】在特定元素上查找排序数组的范围索引【英文标题】:Findingrangeindexofasortedarrayonaspecificelement【发布时间】:2016-09-2621:42:38【问题描述】:我正在使用对集合进行排序的数组。任务是找到一个值的范围。假设我们有这个排序数... 查看详情

索引原理与慢查询优化

...索引管理   1、功能(1).索引的功能就是加速查找(2).mysql中的primarykey,unique,联合唯一也都是索引,这些索引除了加速查找以外,还有约束的功能普通索引INDEX:加速查唯一索引:-主键索引PRIMARYKEY:加速查找+约... 查看详情

七索引优化分析

...查找数据结构”数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。一般来说索引本身也很大... 查看详情

explain优化查询检测

转载:http://tang.on58.com/?p=75所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找,而用的最多,并且是mysql默认的就是二叉树算法BTREE,通过BTRE... 查看详情

使用 AVX2 查找元素索引 - 代码优化

】使用AVX2查找元素索引-代码优化【英文标题】:FindelementindexwithAVX2-codeoptimization【发布时间】:2020-05-3118:32:59【问题描述】:我正在摆弄AVX2来编写一些代码,该代码能够在具有14个条目的数组中搜索32位哈希并返回找到的条目的... 查看详情

是否有针对 Netezza(Toad 数据点)的查询以查找存在特定字段名称的所有表

】是否有针对Netezza(Toad数据点)的查询以查找存在特定字段名称的所有表【英文标题】:IsthereaqueryforNetezza(ToadDataPoint)forfindingalltableswhereaspecificfieldnameexists【发布时间】:2020-12-1116:30:49【问题描述】:我有以下查询,在搜索包... 查看详情