SQL Datenbank und performance



  • Hallo Leute,

    könnt Ihr hier mal drüber schaun? Ich bin kein DB SQL Profil, und habe eine Datenbank (ein Table) in dem ich eindeutige codes 'serialCode' lesen,schreiben und suchen will:

    PRAGMA foreign_keys = ON;
    CREATE TABLE if not exists SerialCodes (
        serialCode      TEXT NOT NULL,                  /* for indicies perfomance just use a text with 21 chars */
        progressState   TEXT COLLATE NOCASE NOT NULL,   /* codes is processed */
        creationTime    INT,                /* Creation time of code */
        startTime       INT,                /* time where code changed from state 'IDLE' to 'PENDING' */
        printer1        TEXT,               /* State of printer 1 */
        printer2        TEXT,               /* State of printer 1 */
        camera1         TEXT,                /* Quality read of camera 1 */
        camera2         TEXT,                /* Quality read of camera 2 */
        activateRetries INT,                /* on each activation try we decrement the Activated number, if we reach 0, we save the not activated codes in a csv file */
        PRIMARY KEY (SerialCode)
    );
    

    Und meine Queryies:

    Gesamte anzahl:

    SELECT COUNT(*) FROM SerialCodes
    

    Alle codes mit einem bestimmten 'progressState' bzw. die Anzahl ! Wäre da hier besser wenn progressSTate INT wäre?

    SELECT COUNT(*) FROM SerialCodes WHERE progressState = (?)
    
    SELECT * FROM SerialCodes WHERE ProgressState = (?)
    
    

    Den ersten/ältesten vorhanden Datensatz mit dem ProgressState = 'IDLE'

    SELECT * FROM SerialCodes WHERE ProgressState = 'IDLE' ORDER BY creationTime ASC LIMIT 1
    

    Einen bestimmten SerialCode suchen!? (dieste is eindeutig, ist die query dann so richtig?

    SELECT * FROM SerialCodes WHERE serialCode = (?)
    

    Wie müsste ich ggf. den TABLE anlegen, damit schnell nach codes gesucht werden kann?

    Wo wäre generell Optimierungbedarf?

    Danke für konstruktive Kritik:)



  • @SoIntMan sagte in SQL Datenbank und performance:

    Wo wäre generell Optimierungbedarf?

    Wo etwas langsam ist?

    Wie müsste ich ggf. den TABLE anlegen, damit schnell nach codes gesucht werden kann?

    Du willst wissen, was an dem gezeigten Schema verbessert werden kann?

    • Zahlenvergleiche sind schneller als Textvergleiche => der Status muss doch bestimmt kein Text sein

    • bei mehr als einer Handvoll Daten hilft es, Suchspalten zu indizieren



  • Genau was könnte ich im Schema (außer progresState als int) und wies sieht das aus mit suchspalten? indizieren INDEX SQL?

    Noch ne frage: wenn ich einen Table anlege:

    "CREATE TABLE Code_Fifo (Code Text)"
    

    und diese als FIFO verwenden will. so dass jedes INSERT alle Datensätze oben einfügt, und ein DELETE den älten/letzen Datensatz rausnimmt? Reicht hier ein Code Text, oder brauch in eine laufende Nummer, AUTOINCREMENT so dass es chronologisch bleibt?
    Und wenn ich eine laufenden Nummer habe, gibt es einen überlauf? hnmm fragen über fragen



  • @SoIntMan sagte in SQL Datenbank und performance:

    Genau was könnte ich im Schema (außer progresState als int) und wies sieht das aus mit suchspalten?

    Nix Deutsch.



  • @SoIntMan sagte in SQL Datenbank und performance:

    oben einfügt

    Es gibt kein "oben", es gibt keine Reihenfolge. Es gibt nur eine Menge von Datensätzen.


Log in to reply