【问题标题】:WHERE condition and Limit clause will increase the performance or not?WHERE 条件和 Limit 子句是否会提高性能?
【发布时间】:2013-06-27 10:44:34
【问题描述】:

我有下表

CREATE TABLE `jobs` (
`job_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`job_name` VARCHAR( 255 ) NOT NULL ,
`job_desc` VARCHAR( 255 ) NOT NULL ,
`job_date` DATETIME NOT NULL
) ENGINE = MYISAM ;

假设此表包含 600,000 个条目

问题一:哪一个好用并且可以提高查询性能?

SELECT job_name FROM jobs WHERE job_id = 10005

Vs

SELECT job_name FROM jobs WHERE job_id = 10005 LIMIT 1

问题2:如果我使用这个有什么缺点?

SELECT job_name FROM jobs WHERE job_id = 10005 LIMIT 1

【问题讨论】:

  • 首先使用 where 子句选择所有记录,然后使用 limit 限制它们,因为您的情况总是只有一条记录,因此无需使用 limit
  • 如果我用这个限制子句有什么缺点?
  • 我不认为有任何缺点,但这里没有必要使用从头到尾的记录限制
  • 我能看到的唯一缺点是它必须多做一点处理解析查询,然后可能多做一点来限制结果。但是额外的时间太小了以至于无关紧要。

标签: mysql performance performance-testing


【解决方案1】:

据我所知,LIMIT 有助于对数据进行分页。所以,当查询包含/不包含 LIMIT 子句时,肯定会有性能差异。

'LIMIT n' 限制返回的行数。下面将只返回前 20 行。

SELECT employee FROM employees WHERE deparment_id = 1 LIMIT 20

但是 'LIMIT n,p' 对匹配的记录进行分页。例如,下面将返回符合 WHERE 条件的第 11 到第 16 条记录。

SELECT employee FROM employees WHERE deparment_id = 1 LIMIT 10,5

因此,在返回的行数很大的情况下,LIMIT 会提高性能。但是,这可能会因匹配的行数和分页范围而异。

【讨论】:

  • Dude job_id 是一个主键,那么它如何返回 20 或 5 行。如果你想解释限制,那就举一些其他的例子
  • 感谢 Ankit!修改了查询部分:)
猜你喜欢
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 2020-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
相关资源
最近更新 更多