Bonjour,

J'ai indexé ma table client sur les champs suivants :
- nom_client => idx_client_nom
- cp_client => idx_client_cp

Quand je fais un explain SQL : mon indexation est bien prise en compte

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
EXPLAIN 
SELECT * FROM client AS c WHERE (client_cp= 38210 and client_nom = 'FDDDDD');

Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<DATA>
 
	<ROW>
		<id>1</id>
		<select_type>SIMPLE</select_type>
		<table>c</table>
		<type>ref</type>
		<possible_keys>idx_client_nom,idx_client_client_nom_client_facture_client_utilisateur,idx_client_cp</possible_keys>
		<key>idx_client_nom</key>
		<key_len>66</key_len>
		<ref>const</ref>
		<rows>1</rows>
		<Extra>Using index condition; Using where</Extra>
	</ROW>
</DATA>

Par contre, quand je fais

Quand je fais un explain SQL : mon indexation n'est pas prise en compte

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
EXPLAIN 
SELECT * FROM client AS c WHERE (client_cp= 38210 OR client_nom = 'FDDDDD');

Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<DATA>
	<ROW>
		<id>1</id>
		<select_type>SIMPLE</select_type>
		<table>c</table>
		<type>ALL</type>
		<possible_keys>idx_client_nom,idx_client_client_nom_client_facture_client_utilisateur,idx_client_cp</possible_keys>
		<key>NULL</key>
		<key_len>NULL</key_len>
		<ref>NULL</ref>
		<rows>11815</rows>
		<Extra>Using where</Extra>
	</ROW>
</DATA>

QUESTION : COMMENT FAIRE POUR QUE MON INDEXATION SOIT UTILISEE QUAND J UTILISE DES 'OR' DANS MES REQUËTES SQL ?

Merci de votre attention et pour vos éventuels réponses.

Cordialement,
Titoff