Kroc a écrit :
> On 3 juil, 15:30, clipper <es...@essai.fr> wrote:
>> .../...
>> Pour l'instant, j'ai une base sqlite avec une table T_Positions dans
>> laquelle je rentre toutes les positions de tous les navires avec comme
>> champs le x, le y, l'id du navire et la date (au sens large du terme,
>> c'est un entier en minutes depuis le début du jeu).
>>
>> Quand je veux afficher toutes les trajectoires, je suis alors obligé de
>> parcourir la table sur 2 indices, d'abord par id puis par date. Et dès
>> que le nombre de positions commence à augmenter, ça devient loooonnnnng.
>
> Voilà qui m'étonne beaucoup ! Je fais des requêtes SQLite sur des
> tables énormes et je n'ai aucun problème de vitesse, alors ce genre de
> requête, uniquement en lecture, devrait vraiment aller vite. Tu dois
> avoir un truc comme ça :
>
> if {[catch {package require sqlite3}] || [catch {sqlite3 DB
> $::sqlite_file} R]} {
> puts "Erreur SQLite : $R"
> exit
> }
> DB timeout 90000
> DB eval [subst {
> SELECT x,y,id,date
> FROM T_Positions
> ORDER BY id,date ASC
> }] res {
> # Le traitement sur chaque ligne vient ci-dessous :
> puts "X = $res(x) - Y = $res(y) - ID = $res(id) - Date = $res(date)"
> }
>
> Ce genre de traitement donne quoi chez toi ?
>
> --
> David
Merci pour cette suggestion.
J'ai modifié ma façon de faire sur le principe que tu donnes.
En fait, ce n'était pas mes requètes à Sqlite qui ralentissait le tout,
mais je redessinais la carte à chaque fois sans que ce soit nécessaire.
Merci tout de même car ça a pas mal simplifié ma procédure (et je pense
pouvoir faire de même sur d'autres...)
--
Clipper, beaucoup plus rapide