使用where子句

时间:2016-09-19 17:10:20

标签: java sql postgresql

我理解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,'%')

我认为两个查询都是等价的。在第一个查询中,我将第二个表的行提供为多个或条件。在第二个查询中,连接条件负责处理它。问题仍然存在于两个查询中。

0 个答案:

没有答案