如果我有一个说id的主键,并且我对该键进行了简单的查询,例如,

SELECT id FROM myTable WHERE id = X

它会找到一行然后停止查找,因为它是主键,还是最好告诉mysql通过使用LIMIT 1来限制其选择? 例如:

SELECT id FROM myTable WHERE id = X LIMIT 1

===============>>#1 票数:8 已采纳

使用“ LIMIT 1”是否可以加快对主键的查询?

不。它已经快了没有LIMIT 1 无论如何,有效地暗示了LIMIT 1

它会找到一行然后停止查找,因为它是主键

是。

这里根本不需要表扫描:这是基于键的查找。 找到匹配的行,到此过程结束。

===============>>#2 票数:5

无需担心这种“优化”。

根据唯一索引合约,将仅获取一行,并且数据库能够非常快速地找到所有(1)行。 之所以能够做到这一点,是因为支持索引(或主键)的基础结构支持按值快速查找。 不涉及表扫描。 (通常使用B树的变体,但它可能是基于哈希的,等等。我想智能查询优化器也可能能够根据有效的唯一约束传递其他提示,但是我不这样做。对此不够了解。)

  ask by cgweb87 translate from so

未解决问题?本站智能推荐:

1回复

在LIMIT 1的查询中使用从属查询是否不好?

我读到很多东西,使用Dependent Query是不好的,我应该使用JOIN ,我有一个代码可以将很多表结合在一起,如下所示 现在,我可以使用一个关联查询,并与选择从另一个表中的值aa这样的 在这种情况下,我是否使用最容易的方式为我阅读和编辑Dependent Query ,还
2回复

MYSQL-在子查询中是否可以使用LIMIT替代方法?

我正在使用MYSQL 。 我有桌子下面的桌子: 该表的示例数据: 我需要一个仅返回每个卖方具有最新日期的行的SQL ,如下所示: 我正在使用子查询来执行此操作,但是MYSQL不接受LIMIT : 没有LIMIT,它可以工作 ,但是我需要限制它,因为表有超过300
1回复

在查询“ SELECT 1…”中使用“ LIMIT 1”是否有意义?

这个问题应该很清楚,但是代替使用它有什么好处吗? SELECT 1 FROM table ... SELECT 1 FROM table ... LIMIT 1 ?
1回复

添加限制会加快mysql查询的速度,为什么?

我有一个带有内部联接的简单查询。 联接的表具有1500 en 2500行。 两个表都有一个主键。 没有对此键进行联接。 该查询的结果集有1500行。 当我运行此查询时,它需要20秒钟...( 永恒力 ) 然后,当我在末尾添加“ LIMIT 1500”时,查询仅需1秒。 (
3回复

是否使用限制主查询效果的子查询?

我有这个问题: 我的问题是我的子查询只运行10次(获取的foreach行)或者它运行“River”表中的每一行? 我的“河”有很多记录,我喜欢有最好的表现来获得河流。 谢谢。
2回复

在特定查询上使用sql LIMIT 1

我想知道在查询中包含LIMIT 1是否更有效 当我们一直希望得到1个结果时。 例如,我有以下查询 我没有广泛的数据库管理技能,但我假设 会提高内存效率,因为查询 一旦找到表,就不必遍历表中的每一行 那排。 我是对的还是在此特定情况下是否包含限制并不重要?
1回复

可以将LIMIT与子查询结果一起使用吗?

当需要有序集的最后一行时,通常会创建派生表并重新排序。 例如,要返回具有自动递增的id的表的最后3个元素: 由于LIMIT也可以具有偏移量,因此如果我们事先知道此查询的行数(例如10),则可以实现相同的结果: 是否可以运行子查询来对表进行count(*)并使用该数字动态构建LI
1回复

使用子项限制查询

假设我有一个可以用某些工具解决的谜题列表。 现在我选择我的工具,我想知道我可以解决哪个难题以及我的列表中的哪个工具。 这是我的sql(对于mysql) 结果我得到像Puzzle1,Tool1,2 Puzzle1,Tool2,2 Puzzle2,Tool1,1 Puzzle 3,Too
2回复

MySQL查询是否有限制?

我想在数据库中插入10,000多个字段? 有限制吗? 每当我尝试插入数据时,它都会失败。
2回复

如何使用别名列加快此查询?

所以我在SO上找到了这个代码片段。 它本质上伪造了MySQL的“row_number()”函数。 它执行得非常快,我喜欢和需要,但我无法在最后的where子句上使用它。 添加where iterator = 875产生错误。 上面的代码片段执行大约.0004秒。 我知道我可以