gpt4 book ai didi

sql-server - 如何处理垃圾 table ?

转载 作者:行者123 更新时间:2023-12-01 04:48:47 25 4
gpt4 key购买 nike

介绍:
数据库和表规范:

  • Microsoft SQL Server 2008 R2
  • 兼容性级别 = 80(不要问为什么)

  • 表规范:
  • 3189706 行。
  • 48 列所有 varchar NULL
  • 没有id,没有索引(只是好玩!)

  • 挑战:
    所有这些的目的是清理迁移到干净的表。两个表都会存在,直到旧程序学会使用新的。
    我会将所有这些放在一个临时表中以检查类型和空值。
    然后清除所有重复项。实际上不可能,因为 varchar 和没有索引。
    CREATE TABLE #TempTrash
    (
    ID          INT IDENTITY(1,1),
    Foo     INT,
    Bar   VARCHAR(50)
    )

    INSERT INTO #TempTrash
    (
    Foo,
    Bar
    )  
    SELECT
    Foo     = CONVERT ( u.TrashFoo , expression )
    ,Bar   = u.trs_Something
    FROM dbo.BurnMe u

    -- 3 Search index for duplicate clean
    CREATE CLUSTERED INDEX IDX_C_Trash_IdFoo ON #TempTrash(Foo)   
    CREATE INDEX IDX_Trash_IdFoo ON #TempTrash(Foo)
    由于这将非常缓慢,因此我向您寻求有关此过程的一些建议。
    以及如何使其尽可能高效。
    让它成为一个黑色的插入物?对插入进行转换和空检查?
    在插入之前添加索引?
    Ps:我简化了Sql查询,因为有48列。

    最佳答案

    SELECT 
    Foo = CONVERT ( u.TrashFoo , expression )
    ,Bar = u.trs_Something
    FROM dbo.BurnMe u

    As this is going to be verry slow I came to you for some advice on this process. and How to make it as efficient as possible.



    这不会有效,因为您要从表中选择所有数据

    如果您想检查数据的有效性并且不想更改表格,我建议您使用 Trigger ,像下面这样的东西
    create trigger trg_test
    on table
    for insert
    as
    begin
    do your validation here
    end

    根据评论更新:
    如果您想保留两个表,我建议不要使用临时表,使用永久表。支付一次检查所有费用,然后只支付增量费用。这是我能想到的唯一想法

    关于sql-server - 如何处理垃圾 table ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43975984/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com