Jérôme Verstrynge Asked: 2012-04-12 05:43:39 +0800 CST2012-04-12 05:43:39 +0800 CST 2012-04-12 05:43:39 +0800 CST 在唯一键字段上执行 SELECT 时添加 LIMIT 0,1 是否有好处/缺点? 772 我正在使用 MySQL 数据库并执行许多这样的选择: SELECT MyField FROM MyTable WHERE MyKey = 'some_value'; 目的是在存在相应行的情况下检索字段值。MyKey是表中唯一的键,它被索引。 我的问题是:添加LIMIT 0,1到我的陈述中是否有任何好处或缺点? mysql select 2 个回答 Voted Derek Downey 2012-04-12T06:28:20+08:002012-04-12T06:28:20+08:00 如果MyKey是NOT NULL(请参阅 Jannes 答案)并定义为UNIQUEDDL 表中的索引,则添加的唯一好处LIMIT 0,1是查询的查看者可能清楚地知道这只会返回一个结果。他们不必查看 DDL 就知道它是独一无二的。但是,其他数据库设计人员无论如何都会关注 DDL。 如果添加任何开销LIMIT 0,1将非常非常小。 无论哪种方式,添加它都取决于您。您是否需要清晰(用户多久查看一次您的查询)? Best Answer Jannes 2012-04-13T08:42:27+08:002012-04-13T08:42:27+08:00 除了其他答案中提出的观点之外,实际上可能存在真正的区别! 如果列被定义为 NOT NULL 或您的 WHERE 子句测试非 NULL 的值(在您的示例中这样做),则唯一索引仅保证单个结果行。所以 SELECT MyField FROM MyTable WHERE MyKey IS NULL; 可以返回多行,而添加 LIMIT 0,1 会将其限制为一个(随机)行。
如果
MyKey
是NOT NULL
(请参阅 Jannes 答案)并定义为UNIQUE
DDL 表中的索引,则添加的唯一好处LIMIT 0,1
是查询的查看者可能清楚地知道这只会返回一个结果。他们不必查看 DDL 就知道它是独一无二的。但是,其他数据库设计人员无论如何都会关注 DDL。如果添加任何开销
LIMIT 0,1
将非常非常小。无论哪种方式,添加它都取决于您。您是否需要清晰(用户多久查看一次您的查询)?
除了其他答案中提出的观点之外,实际上可能存在真正的区别!
如果列被定义为 NOT NULL 或您的 WHERE 子句测试非 NULL 的值(在您的示例中这样做),则唯一索引仅保证单个结果行。所以
可以返回多行,而添加 LIMIT 0,1 会将其限制为一个(随机)行。