我理解distinct子句在获取了与指定条件匹配的所有行之后才起作用。
我正在使用Postgres数据库,我正在加入两个表。我的join where子句有接近5000个条件,并且需要花费大量时间来执行每一行。它也是之类的条件,因此需要花费大量时间来执行。这是一个例子。
+----+----------+
| id | column_a |
+----+----------+
| 1 | A,B,C |
+----+----------+
| 1 | B,C,D |
+----+----------+
| 1 | C,D,E |
+----+----------+
select distinct id from a where column_a like '%A%' or column_a like '%B%'...(5000 other or conditions).
我希望数据库在第1行已经满足过滤条件时不考虑第2行和第3行,因为它最终会被过滤掉。有没有办法在sql或pl-sql中执行此操作?
// EDIT
添加加入条件。
这是表B.
+----+-----------+
| id | column_a |
+----+-----------+
| A | some text |
+----+-----------+
| B | some text |
+----+-----------+
| C | some text |
+----+-----------+
所以连接查询看起来像
select distinct id from a, b where a.column_a like concat('%',b.id,'%')
我认为两个查询都是等价的。在第一个查询中,我将第二个表的行提供为多个或条件。在第二个查询中,连接条件负责处理它。问题仍然存在于两个查询中。