frage zu indexing bei sqlite (3.7)



  • hallo,

    vorab, bin kein datenbankexperte bzgl. Query-Tuning und hoffe daher auf ideen zu folgendem problem:

    es liegt eine C++ anwendung vor die über die sqlite (3.7) C++ API diverse Daten aus einer Datenbank liest (es geht nur ums lesen).

    der relevante anwendungsfall beinhaltet hierbei eine feste SELECT query, die verschiedene tabellen anspricht (insgesamt 6 an der anzahl mit durchschnittlich 10.000 Eintraegen).

    wir haben gemerkt dass fuer version 3.7 das auto-indexing stets angeschaltet ist und haben auch beim erstellen der datenbank keine indizes per hand erzeugt gehabt.

    1. erzeugt man einen index von hand in der kommandozeile von mysql (ueber CREATE INDEX ...) fuer eine zentrale Tabelle, die bei der obig angesprochenen SELECT query eine rolle spielt), dann erreichen wir bei der query-geschwindigkeit sehr viel schnellere antwort-zeiten.

    nun die frage:
    Im Vergleich Query über C++ abgeschickt VS. Query per hand in kommandozeile von sqlite ist die Kommandozeilen-Variante nochmal um ein vielfaches schneller.

    Woher kommt dieser geschwindigkeits-boost vermutlich, bzw. welches Detail muesste man evtl. beachten, damit man die C++ Variante ggf. genauso schnell bekommt?

    Vielen Dank.


Log in to reply