SQL性能(替换)

Jam*_*mes 1 sql database replace sql-server-2005

我有一个大约400,000多行的表.我正在编写一些模式匹配代码,但在我这样做之前需要清理一个列.这归结为做类似替换的操作.

我尝试一次列出一个......

 Update T_ADDRESS set ADDR_LINEONE = REPLACE(ADDR_LINEONE,' southeast ',' se ')
 Update T_ADDRESS set ADDR_LINEONE = REPLACE(ADDR_LINEONE,' southwest ',' sw ')
Run Code Online (Sandbox Code Playgroud)

因为我有超过500个......这花了太长时间.

现在我想把它们筑巢......

 Update T_ADDRESS set ADDR_LINEONE = REPLACE(REPLACE(ADDR_LINEONE,' southwest ',' sw '),' southeast ',' se ')
Run Code Online (Sandbox Code Playgroud)

但这仍然很痛苦.我需要使这个代码适用于所有大小的表(1记录到500万条记录).

有人有什么建议吗?我顺便使用SQL Server.

Rem*_*anu 7

无论你多么喜欢REPLACE,你都必须始终端到端地扫描表格.这就是杀死性能的原因,因为必须以任何合理的方式索引ADDR_LINEONE字段,所以无法更改.

由于这应该是一次性操作,因此长时间无关紧要.

如果这是一个重复的操作,那么你的问题不在这里,就是如何将数据加载到表中:保存数据之前进行转换,否则你就没有机会了.

  • +1:这是您为允许不良数据而支付的税款 (6认同)