问题标签 [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.
mysql - Mysql覆盖vs复合vs列索引
在以下查询中
如果我有 2 个单独的索引,一个在col3上,另一个在col4上,其中哪一个将用于此查询?
我在某处读到,对于查询中的每个表,只使用一个索引。这是否意味着查询无法同时使用两个索引?
其次,如果我同时使用col3和col4创建了一个复合索引,但在WHERE子句中只使用col3会不会降低性能?例子:
最后,在所有情况下都使用覆盖索引更好吗?MISAM 和 innodb 存储引擎有区别吗?
sql - 默认情况下是 db 索引组合吗?
当我在 db2 上创建索引时,例如使用以下代码:
是综合指数吗?如果不是:那么我该如何创建复合索引?如果是:为了有两个不同的索引,我应该分别创建它们:
编辑:这个讨论没有朝着我期望的方向发展(但在一个更好的方向:))我实际上问的是如何创建单独的索引,而不是为什么创建单独的索引,我打算在另一个问题中这样做,但既然你预料到了我:
假设我有一个表 T(A,B,C) 和一个搜索函数 search() 使用以下任何方法从表中选择
如果我创建一个组合索引 ABC,它会在我选择 C 时起作用吗?表很大,插入\更新不那么频繁
google-app-engine - 如果缺少其中一个属性,是否会为实体创建复合索引行?
如果缺少其中一个属性,是否会为实体创建复合索引行?
如果一半实体缺少一个属性,索引表是否只有一半大小?
mysql - 是否有订购 MySQL 复合索引的最佳方法?
我正在考虑向 MySQL 数据库中的表添加复合索引,该表的大小可能有几百万行。复合将由两varchar
列和三列 int 组成。
我的问题如标题中所述:是否存在创建此复合索引的最佳顺序?
例如,其中int
一行可能只有 6 个可能的值,该列更靠近索引定义的前面会更好吗?同样,其中一varchar
列可能有数百万个不同的值,应该靠近索引定义的前面还是后面?
nhibernate - NHibernate 综合指数,不是关键
在 NHibernate 中仍然是一个 n00b :(
出于性能目的,我想向我的一个 POCO 的 hbm.xml 添加一个复合索引。它与一个类没有直接关系,而是我将要查询的两个常见值。
我想我需要<map></map>
在 XML 中做一个条目,但是 XSD 要求composite-key
元素上的类名,并且本身没有直接关系......而且它要求的信息比我认为需要的更多提供。我该怎么做呢?
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 次查找。
因此,如果我们有更高的维度,则间隔计数会随着维度的数量呈指数增长,因此索引可能不再有用 ------ 这是我关心的问题
非常感谢杨
mysql - mysql复合索引理论
我的 sql 是:select id,name,city,type from company where city=? and type=?
. 所以我创建了两个索引:一个在city字段上,另一个在type字段上。所以我的问题是:我是否需要在city和type上创建一个复合索引?如果需要,为什么?两个复合索引btree索引如何?结构 VS 单索引 btree 结构。提前致谢
mysql - 复合索引中的单独连接子句
有一个综合指数是否有利于这样的事情:
索引将是:
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。
mysql - 哪个复合索引会使这个简单的 MySQL 查询更快?
哪个复合索引会使这个简单的 MySQL 查询更快,我将如何创建该复合索引?
col1
上面的每一列 ( to col4
)上已经有一个单独的索引。
编辑:
结果SHOW CREATE TABLE
:
结果EXPLAIN EXTENDED
: