Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL:Оптимален индекс за между заявките

Не съм сигурен защо, но добавянето на поръчка по клауза и ограничение към заявката изглежда винаги води до попадане в индекс и се изпълнява за няколко милисекунди вместо за няколко секунди.

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 |
+----+-------------+--------+-------+-----------------+----------+---------+------+--------+-------------+

Това е достатъчно добре за мен сега, въпреки че бих искал да знам причините, поради които оптимизаторът решава да не използва индекса в другия случай.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. присвояване на потребителска променлива на mysql с count(*)

  2. Как да направите поле за автоматично увеличение в django, което започва от 10000

  3. Вземете оставащите дни, часове и минути с помощта на mySql

  4. Mysql WHERE проблем със списък, разделен със запетая

  5. SQL:Създаване на релационна таблица с 2 различни auto_increment