全表扫描查询超30%即使begin_ip、end_ip有索引,也是不走索引的。
解决方案 »
- mysql里面的datetime和date的问题。
- MySQL 数据库的索引问题
- mysql服务器老是出现意外终止
- MySql 集群 配置 问题 跪求!!!!!!!!!
- 在线急,存储过程中文乱码问题
- load data infile
- 求mysql-max-5.0.18-linux-i686-glibc23.tar.gz,万分感谢!!急用!!!!
- Linux下perl联postgres时出错
- 新手求助!在线等!昨天刚装上MySql,试了一下可以用,今天打开的时候,输入密码后就闪退了~
- mysql备份与恢复等基础问题
- Mysql 导入binary类型,被截断了
- 求把TXT的数据导入MYSQL的方法
结果贴 出来
KEY `idx_geoip_org_ei` (`end_ip`)
这两个索引MYSQL仅会使用一个。 where begin_ip>=1539822726 and end_ip<=1539822726;
这类语句无法优化。
+---------+------------+------------+--------------------+--------+------------+---------------------+
| id | begin_ip | end_ip | organization | status | created_at | updated_at |
+---------+------------+------------+--------------------+--------+------------+---------------------+
| 6075568 | 3756523520 | 3756589054 | Bharti Airtel Ltd. | 0 | 2012-08-13 | 2012-08-13 18:30:03 |
+---------+------------+------------+--------------------+--------+------------+---------------------+
1 row in set (14.69 sec)mysql> explain select * from geoip_org_range force index(idx_uni_geoip_org_iprange) where begin_ip<=3756523522 and end_ip>=3756523522;
+----+-------------+-----------------+-------+---------------------------+---------------------------+---------+------+---------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------------+-------+---------------------------+---------------------------+---------+------+---------+-------------+
| 1 | SIMPLE | geoip_org_range | range | idx_uni_geoip_org_iprange | idx_uni_geoip_org_iprange | 8 | NULL | 6075562 | Using where |
+----+-------------+-----------------+-------+---------------------------+---------------------------+---------+------+---------+-------------+
最后我选择了对原始数据进行处理,通过对原始数据压缩,存储到文件中进行查询访问,速度极大地提高了。