2010-12-02 40 views
1

Fondamentalement, j'ai besoin d'une fonctionnalité min-tas avec sqlite comme stockage de données.
Disons que j'ai besoin d'une table avec 2 colonnes. Le 1er est un identifiant unique et
Le 2ème est une valeur entière.
J'ai toujours besoin de l'id avec la plus petite valeur entière.Qu'est-ce que la conception de base de données efficace dans sqlite quand j'ai seulement besoin d'insérer et de récupérer la plus petite entrée dans une colonne entière?

Des suggestions?

+0

langage de programmation? Peut-être que vous pouvez simplement utiliser le code pour le faire. Envisagez de créer une structure de tas à la place. http://msdn.microsoft.com/en-us/library/6y3edk6s%28VS.80%29.aspx – bhavinp

+0

Les entiers sont insérés dans un ordre aléatoire (non trié). – Nullpoet

+0

Mon application a besoin de ces données sur plusieurs exécutions. Par conséquent, j'ai besoin de sauvegarder sur le disque dur. Donc, finalement, je dois le stocker dans la base de données d'une manière ou d'une autre. Je veux qu'il soit tel que recréer le tas est efficace à partir de la base de données. – Nullpoet

Répondre

2

Vous obtenez gratuitement que sur les colonnes indexées

CREATE TABLE table(
    one INTEGER PRIMARY KEY, 
    two INTEGER 
); 
    CREATE INDEX table_two ON table(two); 

    INSERT ... 

    SELECT MIN(two) FROM table; 
+0

Cela signifie-t-il que la récupération d'un minimum d'une colonne indexée a une complexité temporelle constante? – Nullpoet

+2

@Rohit, pratiquement constant. Les index DB sont généralement des arbres B + avec des branches plutôt larges – Unreason

+0

Thanx .. c'était très utile! – Nullpoet