MYSQL index faster by adding in the query field not in the index
<p>I can't understand the following index behaviour of mysql,</p>

<p>the following query took 25 second and return 64776:</p>

<pre><code>SELECT count(*)
FROM Analisi analisi0_
  INNER JOIN Paziente paziente3_ ON analisi0_.ID_PAZIENTE = paziente3_.ID_PAZIENTE
WHERE 1 = 1
 AND   paziente3_.nome LIKE 'MARIA%';
</code></pre>

<p>the following query took 7 second and return always 64776:</p>

<pre><code>SELECT count(*)
FROM Analisi analisi0_
  INNER JOIN Paziente paziente3_ ON analisi0_.ID_PAZIENTE = paziente3_.ID_PAZIENTE
WHERE 1 = 1
 AND   paziente3_.nome LIKE 'MARIA%'
AND   ( paziente3_.DATA_NASCITA &gt; 0  ||   paziente3_.DATA_NASCITA is NULL);
</code></pre>

<p>the explain for the first slow query is:</p>

<pre><code>id  select_type table   partitions  type    possible_keys   key key_len ref rows    filtered    Extra
1   SIMPLE  paziente3_      range   PRIMARY,IDX_NOME    IDX_NOME    123     178176  100 Using where; Using index
1   SIMPLE  analisi0_       ref FK_ANALISI_PAZIENTE FK_ANALISI_PAZIENTE 4   elettroforesi_light.paziente3_.ID_PAZIENTE  1   100 Using index
</code></pre>

<p>while the explain for the second query is:</p>

<pre><code>id  select_type table   partitions  type    possible_keys   key key_len ref rows    filtered    Extra
1   SIMPLE  paziente3_      range   PRIMARY,IDX_NOME,IDX_DATA_NASCITA   IDX_NOME    123     178176  50.07   Using index condition; Using where; Using MRR
1   SIMPLE  analisi0_       ref FK_ANALISI_PAZIENTE FK_ANALISI_PAZIENTE 4   elettroforesi_light.paziente3_.ID_PAZIENTE  1   100 Using index
</code></pre>

<p>index on table PAZIENTE:</p>

<pre><code>Table   Non_unique  Key_name    Seq_in_index    Column_name Collation   Cardinality Sub_part    Packed  Null    Index_type  Comment Index_comment
paziente    0   PRIMARY 1   ID_PAZIENTE A   1404534             BTREE       
paziente    1   IDX_COGNOME 1   COGNOME A   161711          YES BTREE       
paziente    1   IDX_NOME    1   NOME    A   169702          YES BTREE       
paziente    1   IDX_DATA_NASCITA    1   DATA_NASCITA    A   15513           YES BTREE       
paziente    1   IDX_SESSO   1   ID_SESSO    A   1               BTREE       
paziente    1   FK_PAZIENTE_SPECIE  1   ID_SPECIE   A   1               BTREE       
</code></pre>

<p>and index on table ANALISI:</p>

<pre><code>Table   Non_unique  Key_name    Seq_in_index    Column_name Collation   Cardinality Sub_part    Packed  Null    Index_type  Comment Index_comment
analisi 0   PRIMARY 1   ID_ANALISI  A   1454102             BTREE       
analisi 1   FK_ANALISI_PAZIENTE 1   ID_PAZIENTE A   1454102             BTREE       
analisi 1   FK_ANALISI_SESSIONE 1   ID_SESSIONE A   56498               BTREE       
analisi 1   FK_ANALISI_PATOLOGICO   1   ID_PATOLOGICO   A   1           YES BTREE       
analisi 1   FK_ANALISI_TIPO_VALIDAZIONE 1   ID_TIPO_VALIDAZIONE A   1               BTREE       
analisi 1   FK_ANALISI_UTENTE_MODIFICA  1   ID_UTENTE_MODIFICA  A   1           YES BTREE       
analisi 1   FK_ANALISI_UTENTE_VALIDAZIONE   1   ID_UTENTE_VALIDAZIONE   A   1           YES BTREE       
analisi 1   FK_ANALISI_UTENTE_CANCELLAZIONE 1   ID_UTENTE_CANCELLAZIONE A   1           YES BTREE       
analisi 1   FK_ANALISI_ANALISI_LINK 1   ID_ANALISI_LINK A   1           YES BTREE       
analisi 1   FK_ANALISI_ANALISI_IFE  1   ID_ANALISI_IFE  A   227         YES BTREE       
analisi 1   FK_ANALISI_ANALISI_NOTA 1   ID_ANALISI_NOTA A   17132           YES BTREE       
analisi 1   FK_ANALISI_ANALISI_DATI 1   ID_ANALISI_DATI A   1454102         YES BTREE       
analisi 1   IDX_CAMPIONE    1   CAMPIONE    A   102648          YES BTREE       
analisi 1   IDX_REPARTO 1   REPARTO A   132         YES BTREE   
</code></pre>

<p>I really can't understand why the result is better if both uery use IDX_NOME and IDX_NOME doesn't include DATA_NASCITA.</p>