sql >> Databáze >  >> RDS >> Mysql

MySQL:Optimální index pro mezi dotazy

Nevím proč, ale zdá se, že přidání objednávky podle klauzule a limitu do dotazu vždy vede k nalezení indexu a provede se za několik milisekund namísto několika sekund.

explain select * from geo_ip where 2393196360 between start_ip and end_ip order by start_ip desc limit 1;
+----+-------------+--------+-------+-----------------+----------+---------+------+--------+-------------+
| id | select_type | table  | type  | possible_keys   | key      | key_len | ref  | rows   | Extra       |
+----+-------------+--------+-------+-----------------+----------+---------+------+--------+-------------+
|  1 | SIMPLE      | geo_ip | range | start_ip,end_ip | start_ip | 4       | NULL | 975222 | Using where |
+----+-------------+--------+-------+-----------------+----------+---------+------+--------+-------------+

To mi nyní stačí, i když bych rád znal důvod, proč se optimalizátor rozhodl index nepoužít v druhém případě.



  1. Uložená procedura pro získání nastavení instance

  2. Jak funguje SQLite Char()

  3. Mysqli_fetch_assoc($result), ukazatel se přesune na další záznam. Existuje nějaký způsob, jak resetovat ukazatel na začátek výsledku dotazu?

  4. Metoda hašování hesla Mysql stará vs