Overview
Comment:Optimisation : index sur les champs listés
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 2dac7f9addf0997e1e9d5ff01ba820788c056410
User & Date: bohwaz on 2014-04-22 00:27:06
Other Links: manifest | tags
Context
2014-04-22
00:32
Petites améliorations expérience sur mobile check-in: 70a64c37ce user: bohwaz tags: trunk
00:27
Optimisation : index sur les champs listés check-in: 2dac7f9add user: bohwaz tags: trunk
2014-04-21
15:59
le nom du fichier est en français check-in: d88988316b user: bohwaz tags: trunk
Changes

Modified src/include/class.champs_membres.php from [53bbc4800d] to [64b68e48e3].

   439    439           if ($config->get('champ_identifiant'))
   440    440           {
   441    441               // Mettre les champs identifiant vides à NULL pour pouvoir créer un index unique
   442    442               $db->exec('UPDATE membres SET '.$config->get('champ_identifiant').' = NULL 
   443    443                   WHERE '.$config->get('champ_identifiant').' = "";');
   444    444   
   445    445               // Création de l'index unique
   446         -            $db->exec('DROP INDEX IF EXISTS membres_identifiant;');
   447    446               $db->exec('CREATE UNIQUE INDEX membres_identifiant ON membres ('.$config->get('champ_identifiant').');');
   448    447           }
   449         -        
          448  +
          449  +        // Création des index pour les champs affichés dans la liste des membres
          450  +        $listed_fields = array_keys($this->getListedFields());
          451  +        foreach ($listed_fields as $field)
          452  +        {
          453  +            if ($field === $config->get('champ_identifiant'))
          454  +            {
          455  +                // Il y a déjà un index
          456  +                continue;
          457  +            }
          458  +
          459  +            $db->exec('CREATE INDEX membres_liste_' . $field . ' ON membres (' . $field . ');');
          460  +        }
          461  +
   450    462       	$db->exec('END;');
   451    463       	$db->exec('PRAGMA foreign_keys = ON;');
   452    464   
   453    465       	$config->set('champs_membres', $this);
   454    466       	$config->save();
   455    467   
   456    468       	return true;
   457    469       }
   458    470   }
   459         -
   460         -?>

Modified src/include/class.membres.php from [7f657564b8] to [5f240c7db4].

   637    637           if (!in_array('email', $fields))
   638    638           {
   639    639               $fields []= 'email';
   640    640           }
   641    641   
   642    642           $fields = implode(', ', $fields);
   643    643   
   644         -        return $db->simpleStatementFetch(
   645         -            'SELECT id, id_categorie, '.$fields.', '.$config->get('champ_identite').' AS identite,
   646         -                strftime(\'%s\', date_inscription) AS date_inscription
   647         -                FROM membres '.$where.'
   648         -                ORDER BY '.$order.' LIMIT ?, ?;',
   649         -            SQLITE3_ASSOC,
   650         -            $begin,
   651         -            self::ITEMS_PER_PAGE
   652         -        );
          644  +        $query = 'SELECT id, id_categorie, '.$fields.', '.$config->get('champ_identite').' AS identite,
          645  +            strftime(\'%s\', date_inscription) AS date_inscription
          646  +            FROM membres '.$where.'
          647  +            ORDER BY '.$order.' LIMIT ?, ?;';
          648  +
          649  +        return $db->simpleStatementFetch($query, SQLITE3_ASSOC, $begin, self::ITEMS_PER_PAGE);
   653    650       }
   654    651   
   655    652       public function countByCategory($cat = 0)
   656    653       {
   657    654           $db = DB::getInstance();
   658    655   
   659    656           if (is_int($cat) && $cat)