在 2 个表中按所有字段搜索左连接 - 性能问题?

Posted

技术标签:

【中文标题】在 2 个表中按所有字段搜索左连接 - 性能问题?【英文标题】:searching by all fields with like in 2 tables left join - performance issues? 【发布时间】:2011-11-17 14:24:07 【问题描述】:

我在 firebird sql 2.5 中的 2 个表之间进行左连接,我需要使用 like 语句将它们作为字符串进行搜索。

就像:

表:用户:

ID |姓名 |时间 | ADDRESS_FK

.

表:地址:

ID |街道 |城市 |国家

我想在加入这两个表后,在每个结果字段上搜索匹配的字符串。

最好的性能方法是什么,或者这是唯一可能的方法?

【问题讨论】:

如何搜索它们?您的架构设计是什么样的,到目前为止您尝试过什么?你的样本数据和结果是什么? 我已经更新了我的问题。请随意询问我是否需要添加一些东西。 【参考方案1】:

示例查询

仅限国家/地区

SELECT *
FROM "USER"
LEFT JOIN ADDRESS ON ("USER".ADDRESS_FK = ADDRESS.ID)
WHERE ADDRESS.COUNTRY LIKE 'TURKEY'

国家和城市

SELECT *
FROM "USER"
LEFT JOIN ADDRESS ON ("USER".ADDRESS_FK = ADDRESS.ID)
WHERE ADDRESS.COUNTRY LIKE 'TURKEY' AND ADDRESS.CITY LIKE 'ISTANBUL'

【讨论】:

如果没有指定通配符,则不需要使用LIKE 这只是一个示例数据,可能查询会被通配符 我明白了...似乎没有其他选择:|非常感谢你们 !你太棒了! :)

以上是关于在 2 个表中按所有字段搜索左连接 - 性能问题?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle_SQL 连接和子查询

左连接以填充谷歌大查询中 2 个表中的数据

如何从内部连接的第二个表中按列选择前 1 个顺序 desc?

sql(join on 和where的执行顺序)

sql(join on 和where的执行顺序)

sql(join on 和where的执行顺序)