MYSQL - recherche par tableau ? ca existe


Zecat
WRInaute accro
WRInaute accro
 
Messages: 12000
Inscription: 1 Mar 2005

MYSQL - recherche par tableau ? ca existe

Message le Mer Mai 11, 2011 16:40

A ma droite $tab qui contient 4 elements (ou plus) :

aaa
bbbb
ccccc
ddddd

a) et je veux rechercher les 4 fiches correspondantes. Il y a une syntaxe specifique "SELECT BY ARRAY" ou c'ets à moi de fabriquer le requete avec des OR ?

b) Question subsidiaire : aaa bbbb cccc ddddd sont en fait des clefs uniques indexées dans la table : vaut il mieux (à priori) une requete avec des OR ou 4 requete unitaires ? (dans le cas ou pas de réponse positive au point a ...)

edit : a priori j'ai trouve cela :

Code: Tout sélectionner
<?php
mysql_query("SELECT col FROM une_table WHERE col IN ('".implode("','", array_map('mysql_real_escape_string', $tableau))."')");

// Pour des nombres:
mysql_query("SELECT col FROM une_table WHERE col IN (".implode(',', array_map('intval', $tableau)).")");


Coté perf ca donne quoi ?

Amauri
WRInaute discret
WRInaute discret
 
Messages: 221
Inscription: 7 Avr 2011

Re: MYSQL - recherche par tableau ? ca existe

Message le Mer Mai 11, 2011 16:54

Le code va juste créer une requête pour sélectionner tous les champs correspond.

Avec $foo = array('a','b','c');
Le code va chercher toutes les lignes ou "col" est égal à un des éléments de $foo.


Leonick
WRInaute accro
WRInaute accro
 
Messages: 19595
Inscription: 8 Aoû 2004

Re: MYSQL - recherche par tableau ? ca existe

Message le Dim Mai 15, 2011 22:48

avec les expressions régulières, tu peux aussi y arriver
Code: Tout sélectionner
SELECT col FROM une_table WHERE col REGEXP "^(aaa|bbbb|ccccc|ddddd)$";


Zecat
WRInaute accro
WRInaute accro
 
Messages: 12000
Inscription: 1 Mar 2005

Re: MYSQL - recherche par tableau ? ca existe

Message le Lun Mai 16, 2011 8:34

Laquelle des deux méthodes est la plus performante à priori ? ou ets ce que ca se vaut : un implode = un regex ?


Leonick
WRInaute accro
WRInaute accro
 
Messages: 19595
Inscription: 8 Aoû 2004

Re: MYSQL - recherche par tableau ? ca existe

Message le Lun Mai 16, 2011 8:56

en fait il faudra quand même faire le implode, la différence serait entre regexp et in.
A voir le benchmark...


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité