问题标签 [composite-index]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
13068 浏览

mysql - Mysql覆盖vs复合vs列索引

在以下查询中

如果我有 2 个单独的索引,一个在col3上,另一个在col4上,其中哪一个将用于此查询?

我在某处读到,对于查询中的每个表,只使用一个索引。这是否意味着查询无法同时使用两个索引?

其次,如果我同时使用col3col4创建了一个复合索引,但在WHERE子句中只使用col3会不会降低性能?例子:

最后,在所有情况下都使用覆盖索引更好吗?MISAM 和 innodb 存储引擎有区别吗?

0 投票
3 回答
97 浏览

sql - 默认情况下是 db 索引组合吗?

当我在 db2 上创建索引时,例如使用以下代码:

是综合指数吗?如果不是:那么我该如何创建复合索引?如果是:为了有两个不同的索引,我应该分别创建它们:

编辑:这个讨论没有朝着我期望的方向发展(但在一个更好的方向:))我实际上问的是如何创建单独的索引,而不是为什么创建单独的索引,我打算在另一个问题中这样做,但既然你预料到了我:

假设我有一个表 T(A,B,C) 和一个搜索函数 search() 使用以下任何方法从表中选择

如果我创建一个组合索引 ABC,它会在我选择 C ​​时起作用吗?表很大,插入\更新不那么频繁

0 投票
1 回答
109 浏览

google-app-engine - 如果缺少其中一个属性,是否会为实体创建复合索引行?

如果缺少其中一个属性,是否会为实体创建复合索引行?

如果一半实体缺少一个属性,索引表是否只有一半大小?

0 投票
1 回答
8896 浏览

mysql - 是否有订购 MySQL 复合索引的最佳方法?

我正在考虑向 MySQL 数据库中的表添加复合索引,该表的大小可能有几百万行。复合将由两varchar列和三列 int 组成。

我的问题如标题中所述:是否存在创建此复合索引的最佳顺序?

例如,其中int一行可能只有 6 个可能的值,该列更靠近索引定义的前面会更好吗?同样,其中一varchar列可能有数百万个不同的值,应该靠近索引定义的前面还是后面?

0 投票
1 回答
969 浏览

nhibernate - NHibernate 综合指数,不是关键

在 NHibernate 中仍然是一个 n00b :(

出于性能目的,我想向我的一个 POCO 的 hbm.xml 添加一个复合索引。它与一个类没有直接关系,而是我将要查询的两个常见值。

我想我需要<map></map>在 XML 中做一个条目,但是 XSD 要求composite-key元素上的类名,并且本身没有直接关系......而且它要求的信息比我认为需要的更多提供。我该怎么做呢?

0 投票
5 回答
3212 浏览

oracle - 范围查询条件的Oracle复合索引

我有一张桌子 Blah(纬度浮动,经度浮动,create_time date,owner_id int,......)

我的代码只做一个查询

(当然值 l1, l2,.... o1,o2 是来自程序的动态参数)

我的问题是我应该创建什么样的索引;综合指数?如果是复合索引,我应该先放哪一列?该指数的有效性如何?

我想了很长时间,但找不到有关 oracle 索引如何工作的详细文档。

我可以找到它使用 B-tree 实现的文档,在我们的例子中:B-tree 中的每个键都是一个 4 元组:(column1,column2,column3,column4)其中这些元组的排序关系被定义为词法命令。

那么对于上面的查询,假设我们的顺序是(owner_id, create_time, latitude, longitude),我猜oracle首先需要对点(o1, t1, l1,ll1)进行二分查找,对于这个操作,索引确实是有用。但是接下来,我们需要找到第一个中间体的终点:我们需要找到 (o1,t1, l1, ll2 ),这也可以通过二分查找来完成。

接下来,我们需要找到满足条件的下一个部分,因此我们需要找到 (o1, t1, lx, ll1 ),其中 lx 是下一个大于 l1 的值,我们也可以通过二分查找找到它。但是在我们的例子中,很可能对于相同的纬度,经度不能超过 1 个,所以这里的二分查找并不比线性扫描更有效。

遵循这种精神,如果我们的积分仅在几天内创建,我们似乎应该将具有较小值范围基数的列放在第一位,在这种情况下,create_time。同样,如果我们从不做范围条件,而只做等于(=)条件,那么哪一列在前并不重要,对吧?

为了更清楚,这里有一个更简单的例子:

假设我有 2 列,X 和 Y

在数据库中,两者的值都是 [1,2,....100],所以我们有 100x100 行

我的查询是

假设我们的索引在 (X, Y) 上,所以 2 个值之间的比较规则是

给定上述排序规则,我们可以看到索引中的值是按顺序排列的(x,y 的值):

现在,要在查询中搜索值,B-Tree 遍历需要定位 (78-​​34-1) 间隔,因此 (78-​​34-1)*2 查找(1 表示开始位置) ,而不仅仅是 2 次查找。

因此,如果我们有更高的维度,则间隔计数会随着维度的数量呈指数增长,因此索引可能不再有用 ------ 这是我关心的问题

非常感谢杨

0 投票
1 回答
192 浏览

mysql - mysql复合索引理论

我的 sql 是:select id,name,city,type from company where city=? and type=?. 所以我创建了两个索引:一个在city字段上,另一个在type字段上。所以我的问题是:我是否需要在city和type上创建一个复合索引?如果需要,为什么?两个复合索引btree索引如何?结构 VS 单索引 btree 结构。提前致谢

0 投票
2 回答
1707 浏览

mysql - 复合索引中的单独连接子句

有一个综合指数是否有利于这样的事情:

索引将是:

0 投票
1 回答
582 浏览

sql-server - 综合指数建议

我有一个巨大的(数百万行)表,其中包含以下列:

它基本上是一个事件表(“What”),一次发生在各种实体(“Who”)(“When”)。'What' 有大约 10 个不同的值——它是一个枚举。目前“谁”有大约 10,000 个值。

我希望能够查询此表,以询问某个时间之间一个或多个实体是否发生了某些事情。例如,[What = 0, 1, 2, 3] 在 [When = '2012-10-01' 到 '2012-11-01'] 之间是否发生在 [Who = 0, 1, 2, 3] 上。

我正在寻找有关如何最好地索引此表的建议。我相当确定复合索引是要走的路,但我不确定确切的配置。例如,列顺序应该是什么?我读过“最有选择性”的列应该放在左边,我认为在这种情况下应该是 [When]、[Who]、[What]。它是否正确?

抱歉,如果这个问题看起来含糊不清,但我将不胜感激。我正在使用 SQL Server 2012。

0 投票
3 回答
3567 浏览

mysql - 哪个复合索引会使这个简单的 MySQL 查询更快?

哪个复合索引会使这个简单的 MySQL 查询更快,我将如何创建该复合索引?

col1上面的每一列 ( to col4)上已经有一个单独的索引。


编辑

结果SHOW CREATE TABLE

结果EXPLAIN EXTENDED