2010-12-07 9 views
1

Je voudrais utiliser un CTE SQL Server 2008 (récursif?) Pour sélectionner 1 million de lignes à la fois d'une table de 400 millions de lignes. Les résultats seront écrits dans un fichier texte, que je grok mais pas la partie chunking CTE.CTE à sélectionner dans les morceaux?

La table a de bons index de recouvrement sur une colonne DateTime mais pas PK.

Quelqu'un a-t-il des suggestions?

Merci.

+2

Il y a des informations terriblement insuffisantes ici. Donnez la structure exacte de la table, les index, et quel est le résultat souhaité. Il y a à peu près un million de façons de sélectionner des morceaux à partir d'une table arbitraire, en utilisant ou non des CTE, récursifs ou non récursifs ... –

Répondre

2

Vous pouvez créer un PK de formatage en utilisant la fonction de fenêtrage ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY <column>) as PK_Key mais ce sera sous-optimal car la totalité de la table sera commandée pour chaque sélection.

Une meilleure façon de le faire est de découper votre déclaration par les index que vous avez à la place de sur exactement 1m lignes. C'est-à-dire, examinez certaines de vos données et choisissez une limite arbitraire qui réalise ce que vous voulez. Si vous avez environ 1 million de lignes par mois, pour chaque opération de récupération de données, obtenez un mois de données. Vous n'aurez même pas besoin d'un CTE, car vous n'avez pas affaire à des structures de données récursives.

+0

J'aime l'idée de segmentation par index préexistant. Il y a un index clusterisé sur 3 colonnes qui est le même dans chaque table. Cependant, lorsque je passe devant ma table de test, il y a des millions de lignes dans chaque table. Donc, je m'intéresse plus à «tirer et oublier» qu'à toute autre chose, donc le découpage sur un nombre arbitraire comme un million est un best-bet décent (les données seront BCPd plus tard). – Snowy

+0

Eh bien, vous pouvez toujours ajouter une étape qui obtient les lignes TOP 1m commandées par puis utilisez les plages min et max de l'index pour déterminer votre "facteur de segmentation" – hova

Questions connexes