Maison > base de données > tutoriel mysql > Comment générer efficacement une grande séquence numérique dans MySQL ?

Comment générer efficacement une grande séquence numérique dans MySQL ?

Patricia Arquette
Libérer: 2025-01-11 16:41:43
original
759 Les gens l'ont consulté

How to Efficiently Generate a Large Numeric Sequence in MySQL?

Générer de grandes séquences numériques dans MySQL : une approche corrigée

Cet article aborde le défi de créer une grande table de nombres consécutifs dans MySQL. Une tentative précédente a entraîné une erreur de syntaxe en raison de points-virgules et de virgules manquants. Voici le code corrigé et une alternative plus efficace utilisant des générateurs.

Syntaxe corrigée pour l'insertion directe :

Le code suivant montre la syntaxe correcte pour créer la table et insérer des données, bien que ce ne soit pas la méthode la plus efficace pour les grandes séquences :

<code class="language-sql">CREATE TABLE numbers (
  number INT NOT NULL,
  CONSTRAINT XPKnumbers PRIMARY KEY CLUSTERED (number)
);

INSERT INTO numbers (number) VALUES (0);

-- The following section contains a syntax error in the original post and is not valid MySQL.  A procedural approach is needed for iterative insertion.
-- A stored procedure or a loop within a script would be more appropriate for large datasets.</code>
Copier après la connexion

Approche efficace avec les générateurs :

Une méthode nettement plus efficace exploite la puissance des vues MySQL pour créer des générateurs. Ces générateurs produisent des séquences de nombres qui peuvent ensuite être insérées dans le tableau numbers. Cela évite les requêtes répétées pour le nombre maximum existant.

Voici un exemple de la façon de construire de tels générateurs :

<code class="language-sql">CREATE OR REPLACE VIEW generator_16 AS
  SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL
  SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL
  SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL
  SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL
  SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
  SELECT 15;

CREATE OR REPLACE VIEW generator_256 AS
  SELECT ((hi.n << 4) | lo.n) AS n
  FROM generator_16 lo, generator_16 hi;

-- Create additional generator views (generator_4096, generator_64k, etc.) as needed, building upon previous ones.</code>
Copier après la connexion

Population efficace de la table :

Une fois les générateurs créés, vous pouvez remplir efficacement le numbers tableau :

<code class="language-sql">INSERT INTO numbers (number)
SELECT n FROM generator_64k; -- Replace generator_64k with the appropriate generator view for your desired range.</code>
Copier après la connexion

En utilisant cette approche génératrice, vous évitez le goulot d'étranglement des performances des insertions itératives et accélérez considérablement le processus de création d'une grande séquence numérique dans votre base de données MySQL. N'oubliez pas d'ajuster la vue du générateur utilisée (generator_64k dans cet exemple) pour qu'elle corresponde à la taille de la séquence dont vous avez besoin.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal