Maison >base de données >tutoriel mysql >En quoi les clauses « PARTITION BY » et « KEEP » diffèrent-elles dans le partitionnement des données d'Oracle ?
PARTITION BY avec et sans KEEP dans Oracle
Lors du partitionnement de données dans Oracle, deux options principales sont disponibles : PARTITION BY et KEEP. Les deux options peuvent être utilisées pour regrouper les données en sous-ensembles plus petits, mais elles ont des effets différents sur les données résultantes.
PARTITION BY
La clause PARTITION BY est utilisée pour diviser une table en partitions plus petites basées sur une ou plusieurs colonnes. Les données de chaque partition sont stockées séparément des données des autres partitions. Cela peut améliorer les performances de certains types de requêtes, telles que les requêtes qui filtrent les données en fonction d'une valeur de colonne spécifique.
Par exemple, la requête suivante utilise la clause PARTITION BY pour diviser la table empl en partitions en fonction du numéro de service. column :
SELECT empno, deptno, sal, MIN(sal) OVER (PARTITION BY deptno) AS "Lowest", MAX(sal) OVER (PARTITION BY deptno) AS "Highest" FROM empl;
Cette requête renverra le salaire le plus bas et le plus élevé pour chaque département. Les données de chaque département seront stockées dans une partition distincte, ce qui améliorera les performances des requêtes qui filtrent les données par département.
KEEP
La clause KEEP est utilisée pour spécifiez les lignes à conserver de chaque partition. La clause KEEP peut être utilisée avec la clause PARTITION BY ou la clause DISTINCT.
Lorsqu'elle est utilisée avec la clause PARTITION BY, la clause KEEP spécifie les lignes à conserver de chaque partition. Par exemple, la requête suivante utilise la clause KEEP pour conserver uniquement la première ligne de chaque partition :
SELECT empno, deptno, sal, MIN(sal) OVER (PARTITION BY deptno) AS "Lowest", MAX(sal) OVER (PARTITION BY deptno) AS "Highest" FROM empl KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno);
Cette requête renverra le salaire le plus bas et le plus élevé pour chaque département, mais elle ne renverra que la première ligne. de chaque partition. Cela peut être utile pour les requêtes qui doivent renvoyer un nombre limité de lignes ou pour les requêtes qui doivent renvoyer des données dans un ordre spécifique.
Différence entre PARTITION BY et KEEP
La principale différence entre PARTITION BY et KEEP est que PARTITION BY divise les données en partitions plus petites, tandis que KEEP spécifie les lignes à conserver de chaque partition. PARTITION BY peut être utilisé pour améliorer les performances de certains types de requêtes, tandis que KEEP peut être utilisé pour limiter le nombre de lignes renvoyées par une requête ou pour renvoyer des données dans un ordre spécifique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!