SQL Server 2008 R2にINSEE
テーブルがあります。私はいくつかの重複した値を持っています(54 000のうち15 000行が削除されなければなりません)。これは私の現在のスクリプトは、同じiee_nom
、iee_departement
とiee_type
を持っている場合重複するSQL要求を最適化する値
declare @datainsee table
(
di_nom varchar(100),
di_departement varchar(5),
di_type varchar
)
declare @datainseeidentifiant table
(
dii_nom varchar(100),
dii_departement varchar(5),
dii_type varchar,
dii_identifiant uniqueidentifier
)
insert into @datainsee select iee_nom,iee_departement,iee_type from insee
group by iee_nom,iee_departement,iee_type
having(count(*)>1)
insert into @datainseeidentifiant
select di_nom,di_code,di_type,
(select top 1 iee_guid from insee where iee_departement=di_departement and iee_nom=di_nom and iee_type= di_type) from @datainsee
delete from insee
where iee_guid not in (select dii_identifiant from @datainseeidentifiant) and iee_nom in (select dii_nom from @datainseeidentifiant)
行が重複したとみなされています。 ..
私のクエリを最適化するための任意のアイデアは、私がT-SQL: Deleting all duplicate rows but keeping oneのようなソリューションを見てみましたが、GUID
ではない数であるので、それが私の場合には動作しませんか? 1分は私のアプリケーションには長すぎます。
テーブルに自動生成ID列がありますか? –
いいえ、uniqueidentifierとしてのGUIDのみです。 プライマリキーがありませんID .. 私はそれが悪いと知っていますが、私が来る前にアプリケーションが作成されていて、アプリケーションの古いバージョンです。 –