【发布时间】:2014-12-12 15:01:27
【问题描述】:
我有一个包含 id 和代码条目的表。代码是唯一的,但 id 是主键。
ID Code
1 ABC1234T
2 ABC6789Y
3 ABC9999A
4 QAZ1234G
5 QAZ6574U
6 QAZ9999A
7 TRE1234Y
8 REW1234U
我需要找到没有 *999A 条目的前缀(前 3 个字母)。在给定的示例中,它将是 TRE 和 REW。我的查询很慢,大约 9000 条记录需要 17 秒才能运行。我知道这主要是因为我使用的是 NOT IN 和子查询。谁能给我一些如何优化它的想法?
SELECT distinct LEFT(newcode, 3) as codeprefix FROM diatcode where (LEFT(newcode, 3)) NOT in (select DISTINCT LEFT(newcode, 3) from diatcode where newcode like '___9999A' ) order by newcode
【问题讨论】:
标签: mysql subquery query-optimization