SQL Code Smells

时间:2010-04-17 06:10:07

标签: sql

请列出一些SQL新手中的不良做法?

我发现在可以使用set操作解决的场景中使用“WHILE loop”。

另一个例子是仅在数据不存在时插入数据。这可以使用LEFT OUTER JOIN来实现。有些人选择“IF”

还有其他想法吗?

编辑:我正在寻找的是可以使用SQL而不使用过程构造实现的特定方案(如问题中所述)

由于

Lijo

5 个答案:

答案 0 :(得分:8)

以下是我见过的一些内容:

  • 使用游标而不是等效(和更快)设置操作(连接等)。
  • 一切的动态SQL。
  • 对SQL注入攻击持开放的代码。
  • 即使不需要它们,也可以进行全外连接。
  • 巨大的存储过程(数百/数千行)。
  • 没有评论。

答案 1 :(得分:4)

在代码上放置ODBC或动态SQL调用。

通常最好定义一个提供访问的数据抽象层 到数据库。所有SQL代码都可以隐藏在该层中。 这通常可以避免复制类似的查询,并进行更改 数据模型更容易做到。

答案 2 :(得分:2)

我个人:任何不是普通INSERT,UPDATE,DELETE或SELECT语句的东西

我不喜欢SQL中的逻辑。

答案 3 :(得分:1)

我这里最大的牛肉肯定是重复的SQL。例如,多个存储过程执行完全相同的连接但不同的过滤器。

在这种情况下使用视图可以使您的数据库更容易查看和使用

答案 4 :(得分:0)

  1. 创建特定于供应商的SQL,当通用SQL可以执行时。

  2. 在运行时动态创建表(TEMPORARY表除外)。

  3. 让您的应用程序代码具有表创建或超级用户权限。