sql - Inner Join 是否存在性能问题?

标签 sql sql-server stored-procedures join

目前我在 sp 中使用了很多内部联接(大约 7 个),这对 sp 性能有任何影响吗?左外连接是否比内连接提供更好的性能。

还有一件事,如果我连接两个表 a 和 b,其中列 id 和 id1 都不可为空。我想在这里我可以进行内部联接,因为这些列已索引。

最佳答案

外连接比内连接更昂贵。我要说的话可能会引起很多人的争议。如果你正确调整数据库并且不做任何愚蠢的事情,并且如果你使用的是专业的 RDBMS,那么 7 个内连接应该不是问题。

数据库调整是什么意思?数据库调整有很多内容,但最明显的检查是确保始终连接已索引的列。

我说的愚蠢是什么意思?不要在连接条件中使用 OR 运算符。尝试将连接保持在单个比较上,例如一个表中的外键等于另一个表中的主键。尝试将所有关键字段都输入为整数。

如果您确实遇到性能问题,请务必研究有问题的查询的执行计划。例如,当连接非常大的表时,您可能会遇到问题,大到甚至索引扫描都太慢。您可能必须进行非规范化并提供额外的过滤以减少扫描时间。不要试图预测这一点。反规范化最好是在遇到现实世界的性能情况之后才进行。

关于sql - Inner Join 是否存在性能问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1157578/

相关文章:

mysql - Mysql中的Substring_index分隔符

sql - 单词 join 处或附近的语法错误

mysql - 使用 Spring Data JPA 获取两个日期之间的记录

对部分列数据进行 SQL 联接 (SQL Server)

postgresql - postgresql中带有临时表的存储函数

sql-server - 如何回滚存储过程中的事务?

c# - 以下关系的实体设计建议

python - 通过 pyodbc 在 MS SQL 中创建存储过程

sql-server - 运行 SQL 代理的 SQL 代理不会在步骤之间等待

sql - 基于sql中的空/非空参数构建where子句