楼主: liuhaiabc

快来看看我的SQL语句执行如此之慢,望急救!

[复制链接]
论坛徽章:
14
2011新春纪念徽章
日期:2011-04-02 17:01:062013年新春福章
日期:2013-02-25 14:51:24复活蛋
日期:2012-12-06 19:27:46ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:00ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42紫蛋头
日期:2012-03-13 16:37:18灰彻蛋
日期:2012-02-06 14:20:122012新春纪念徽章
日期:2012-01-04 11:57:56灰彻蛋
日期:2011-12-26 14:20:13茶鸡蛋
日期:2011-12-20 15:00:13
11#
发表于 2011-11-9 10:16 | 只看该作者
1.2个IP字段用的是double类型,建议int
2.正好我这里有和你一样的表,刚刚测试了下,没必要强制使用索引。sql会自动选择这个索引的。
-------+---------------+----------+---------+------+------+
type  | possible_keys | key      | key_len | ref  | rows |
-------+---------------+----------+---------+------+------+
range | index_ip      | index_ip | 5       | NULL |   14 |
-------+---------------+----------+---------+------+------+
3 共享个经验:前段时间遇到一个业务问题,和用户Ip有关,最后的方案:建立ip地址标准库,通过ip查询信息优先到标准库查询,如果不存在则在ip参考库(你贴出来这个表)进行定位,并回头写入标准库。这样后期效率会很高。

使用道具 举报

回复
论坛徽章:
3
ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262012新春纪念徽章
日期:2012-01-04 11:53:29蜘蛛蛋
日期:2012-03-09 15:07:54
12#
发表于 2011-11-9 10:19 | 只看该作者
jinguanding 发表于 2011-11-9 10:13
LZ昨天也问我了,也觉得真是非常奇怪哦!!!

就是没让其提供表结构给我看,

学习了,我竟然无视了

使用道具 举报

回复
论坛徽章:
3
ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262012新春纪念徽章
日期:2012-01-04 11:53:29蜘蛛蛋
日期:2012-03-09 15:07:54
13#
发表于 2011-11-9 10:20 | 只看该作者
devilkin0312 发表于 2011-11-9 10:16
1.2个IP字段用的是double类型,建议int
2.正好我这里有和你一样的表,刚刚测试了下,没必要强制使用索引。s ...

v5,学习了,double确实很少遇到开发人员使用,呵呵

使用道具 举报

回复
论坛徽章:
25
ITPUB元老
日期:2005-02-28 12:57:00咸鸭蛋
日期:2013-02-07 11:51:42咸鸭蛋
日期:2013-02-08 09:48:51蜘蛛蛋
日期:2013-02-21 15:47:392013年新春福章
日期:2013-02-25 14:51:24咸鸭蛋
日期:2013-02-28 17:08:42蜘蛛蛋
日期:2013-03-29 16:17:14双黄蛋
日期:2013-04-11 16:11:04咸鸭蛋
日期:2013-05-07 11:55:14咸鸭蛋
日期:2013-05-28 10:46:24
14#
发表于 2011-11-9 10:22 | 只看该作者
已经走索引了,没什么好优化的,
列start_id, 和end_ip有特殊关系吗?看索引是否可以修改下

使用道具 举报

回复
论坛徽章:
0
15#
 楼主| 发表于 2011-11-9 10:23 | 只看该作者
jinguanding 发表于 2011-11-9 10:13
LZ昨天也问我了,也觉得真是非常奇怪哦!!!

就是没让其提供表结构给我看,

int 类型太小了吧

使用道具 举报

回复
论坛徽章:
25
ITPUB元老
日期:2005-02-28 12:57:00咸鸭蛋
日期:2013-02-07 11:51:42咸鸭蛋
日期:2013-02-08 09:48:51蜘蛛蛋
日期:2013-02-21 15:47:392013年新春福章
日期:2013-02-25 14:51:24咸鸭蛋
日期:2013-02-28 17:08:42蜘蛛蛋
日期:2013-03-29 16:17:14双黄蛋
日期:2013-04-11 16:11:04咸鸭蛋
日期:2013-05-07 11:55:14咸鸭蛋
日期:2013-05-28 10:46:24
16#
发表于 2011-11-9 10:27 | 只看该作者
32bit就够了ipv4

使用道具 举报

回复
论坛徽章:
3
ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262012新春纪念徽章
日期:2012-01-04 11:53:29蜘蛛蛋
日期:2012-03-09 15:07:54
17#
发表于 2011-11-9 10:47 | 只看该作者
索引鉴别度很高,为什么你的查询扫了那么多行,求解释

使用道具 举报

回复
论坛徽章:
25
ITPUB元老
日期:2005-02-28 12:57:00咸鸭蛋
日期:2013-02-07 11:51:42咸鸭蛋
日期:2013-02-08 09:48:51蜘蛛蛋
日期:2013-02-21 15:47:392013年新春福章
日期:2013-02-25 14:51:24咸鸭蛋
日期:2013-02-28 17:08:42蜘蛛蛋
日期:2013-03-29 16:17:14双黄蛋
日期:2013-04-11 16:11:04咸鸭蛋
日期:2013-05-07 11:55:14咸鸭蛋
日期:2013-05-28 10:46:24
18#
发表于 2011-11-9 11:58 | 只看该作者
建议单独在start_id或end_ip上建立索引看看

使用道具 举报

回复
论坛徽章:
0
19#
发表于 2011-11-9 17:17 | 只看该作者
SQL要重写成这样:
SELECT country,province,city,isp FROM ip_address   WHERE start_ip<=3658152023   AND end_ip>=3658152023   ;

使用道具 举报

回复
论坛徽章:
3
ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262012新春纪念徽章
日期:2012-01-04 11:53:29蜘蛛蛋
日期:2012-03-09 15:07:54
20#
发表于 2011-11-9 18:08 | 只看该作者
ymhtt 发表于 2011-11-9 17:17
SQL要重写成这样:
SELECT country,province,city,isp FROM ip_address   WHERE start_ip=3658152023   ;
...

explain出来有区别吗?

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表