问题标签 [indexing]

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 投票
9 回答
153977 浏览

sql - 如何强制 Postgres 使用特定索引?

当 Postgres 坚持执行顺序扫描时,如何强制它使用索引?

0 投票
5 回答
4924 浏览

sql - 在涉及“日期范围”和“订单 ID”的大表中查询的推荐索引

我有一个查询(由 LINQ to SQL 创建)来获取在某个日期范围内进行的“站点访问”列表,这些日期范围导致了订单(orderid 不为空)。

查询没有问题。我只需要有关为其创建正确索引的建议。我在生产站点上尝试不同的组合并设法搞砸了,以至于外键断开连接。在一些恐慌之后,我修复了这个问题 - 但我想我现在会在重新创建索引之前征求意见。

该表接近一百万行,我需要索引来帮助我。此查询仅用于报告,因此不必非常快,只是不要延迟其他用户的查询(它正在这样做)。

我目前有一个聚集索引SiteVisitId,这是我的身份整数列。

我不知道以下哪个最有可能是最有效的:

  • 创建索引Date
  • 创建一个索引Date和一个单独的索引OrderId
  • Date在AND上创建“多列”索引OrderId
  • 其他组合?

我还想知道是否应该创建一个单独的位列,hasOrder而不是检查OrderId IS NOT NULL这是否更有效。

仅供参考:KnownReferer 只是一个包含 100 个左右已知 HttpReferer 列表的表格,因此我可以轻松查看来自 google、yahoo 等的点击量。

0 投票
2 回答
2499 浏览

mysql - MySQL -- create two indexes, only one appears in SHOW CREATE TABLE output

In have a many-to-many linking table and I'm trying to set up two foreign keys on it. I run these two statements:

I would expect that when I run SHOW CREATE TABLE address_list_memberships I'd see this:

But instead I get this:

It looks as though only one index is there. Seems to contradict the MySQL docs which say MySQL automatically creates an index on the referencing column whenever you create a foreign key.

I've noticed this only-one-index thing every time I create two FKs on a table whether I use a GUI tool such as CocoaMySQL or SQLyog, or whether I do it on the command line.

Any illumination of this mystery would be very much appreciated.

0 投票
6 回答
83998 浏览

sql - Oracle - 选择字段具有小写字符的位置

我在 Oracle 9.2.0.6 数据库中有一个表 users。其中两个字段是 varchar - last_name 和 first_name。

当向该表中插入行时,名字和姓氏字段应该全部大写,但是不知何故这两个字段中的某些值是混合大小写的。

我想运行一个查询,它将向我显示表中包含名字或姓氏的所有行,其中包含小写字符。

我在网上搜索并找到了 REGEXP_LIKE,但这一定是针对较新版本的 oracle - 它似乎对我不起作用。

我尝试的另一件事是将“abcde...z”翻译为“$$$$$...$”,然后在我的字段中搜索“$”,但必须有更好的方法吗?

提前致谢!

0 投票
4 回答
10683 浏览

sql-server - SQL Server 哈希索引

当使用 CHECKSUM 列类型人为创建哈希索引时,查找实际上是 O(1) 还是仍然像聚集索引一样 O(lg n)?我有一个表,我将根据它的 ID 列从中选择,我需要尽可能快的查找,那么聚集索引是最快的选项吗?我正在寻找能够提供 O(1) 性能的东西。

0 投票
3 回答
48784 浏览

mysql - 什么时候应该重建数据库索引?

我在这里阅读了关于重构一个大型慢速 SQL 查询的信息,当前最高响应来自 Mitch Wheat,他希望确保查询使用主要选择的索引,并提到:

我要做的第一件事是检查以确保定期运行活动的索引维护作业。如果没有,请重建所有现有索引,或者如果不可能,至少更新统计信息。

我只是一名业余 DBA,并且我已经制作了一些程序自由职业者,它们基本上是 Java 桌面客户端,偶尔也是 MySQL 后端。当我设置系统时,我知道要在将要查询的列上创建一个索引,有一个 varchar CaseID 和一个 varchar CustName。

然而,我在几个月前设置了这个系统并让客户端运行它,我相信索引应该随着数据的输入而增长,我相信一切仍然运行良好。我担心索引应该定期重建,因为今天我读到应该有一个“积极的维护工作”。我设置的唯一维护工作是每晚备份。

我想向社区询问数据库可能需要的定期维护。是否需要重建索引?只要没有人弄乱它并且数据保持在几千兆字节以下,我是否可以相信 MySQL 后端会继续运行?

0 投票
2 回答
3023 浏览

mysql - MySql 索引填充因子?

在 MySql 中创建索引时如何指定填充因子?

0 投票
6 回答
13167 浏览

mysql - MySQL - 如何在 WHERE x IN ()

我正在使用此查询来获取 {clients 的所有员工,其名称以小写“a”开头}:

Columnemployees.client_id是一个 int,带有INDEX client_id (index_id). 恕我直言,子查询应该返回一个 id-s 列表,然后在 WHERE 子句中使用。

当我EXPLAIN查询时,主查询不使用索引(type:ALL)。但是,当我EXPLAIN 从子查询(例如SELECT ... WHERE client_id IN (121,184,501))中获取一个列表时,EXPLAIN切换到type:range,并且该查询的速度提高了 50%。

如何使查询使用子查询返回的数据的索引 - 或者,是否有更有效的方法来检索这些数据?(将 id-list 检索到应用程序服务器,加入它并发送第二个查询在这里更加昂贵)。

提前致谢。

0 投票
3 回答
5286 浏览

mysql - MySQL中的两列主键

我有一个非常简单的问题和一个可行的解决方案,但我正在寻找一个更简单的解决方案。

当多个值等于现有值时,我想防止将行添加到数据库中。例如,如果 a2=a1 AND b2=b1 则数据将被拒绝。如果仅 a2=a1 或仅 b2=b1 则允许。基本上我希望它像一个需要两个值匹配的主键。

我知道我可以在写入数据库之前通过验证来做到这一点——例如。选择 * where a='a2' and b='b2' 然后在我得到结果时避免写入新数据。我宁愿做的是启用一个 MySQL 设置,比如主键,它会自动阻止这样的数据。

除了基本功能之外,我对 MySQL 不是很熟悉,所以如果这很简单,我很抱歉。谷歌搜索围绕唯一索引和主键的各种事情并没有帮助。

0 投票
9 回答
14905 浏览

sql - SQL Server 聚集索引 - 索引顺序问题

我有一张这样的桌子:

keyA 和 keyB 一起是唯一的,是我的表的主键并组成了一个聚集索引。

keyB 有 5 个可能的值,但 keyA 的可能值数量不受限制。keyB 通常递增。

例如,根据首先排序哪个键列,可以对以下数据进行 2 种排序:

或者

我是否需要告诉聚集索引哪些键列的可能值较少,以允许它首先按该值对数据进行排序?还是就性能而言,先订购哪个无关紧要?