LEFT JOIN字符串值

时间:2018-03-01 19:50:18

标签: mysql sql

我很好奇是否应该在字符串字段上加入表来修剪字符串字段?

假设您在两个不同的表中有两个相同的字符串。您想要在这两个字符串上连接两个表。所以你会做这样的事情:

SELECT * 
  FROM table_primary
  LEFT 
  JOIN table_seconday 
    ON table_primary.string_one = table_seconday.string_two

我的问题是,即使字符串相同,首先应该修剪字符串字段,然后相互比较吗?

加入字符串时是否有最佳做法,或者加入整数时通常会进行比较?

3 个答案:

答案 0 :(得分:3)

通常,加入字符串值表示设计错误,除非它们是主键或某些代码(例如学生ID)。在后一种情况下,您不应以任何方式修改值,否则查询将不会使用索引,性能将受到重创。

如果这只是一次性案例并且性能不是问题,那么您可以从技术上做任何能够获得所需结果的事情。因此,如果这些字符串可能有一些额外的空格,那么你可以修剪它们。同样,这表明存在一些数据完整性问题。在将字符串首先插入数据库之前验证和清理字符串要好得多。因此,例如,如果您在将字符串插入数据库之前修剪字符串,那么您现在不需要担心它,即使它仍然没有使用索引,性能也会更好,因为至少您将节省时间修剪功能将采取双方。

答案 1 :(得分:1)

现在这取决于你的用例。

是的,如果您有可能从应用程序中获取噪音数据。

否,如果您没有来自应用程序的任何噪音,那么您将拥有正确的数据。

因此,如果您不必要地使用修剪,您的性能正在下降,我知道这可以忽略不计,但仍然会受到服务器资源的影响。 如果你避免并且你有一些嘈杂的数据,你将无法获得预期的输出。

答案 2 :(得分:0)

您可以尝试在每个表中添加校验和列,然后加入该表。