• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

请问:怎么优化这条sql

mysql 搞代码 7年前 (2018-06-05) 139次浏览 已收录 0个评论

请教:如何优化这条sql?
我有倆个表、一个是全部城市的表(数据量3K左右)、一个是所有ip段的表(数据量为47W左右)、

  就是想知道一个ip是哪里的城市、 给于显示 该城市id 、名、和大区

SQL code

 select district1_.CN_ID  , district1_.CN_BIG_AREA , district1_.CN_NAME  from MD_IP_ADDR ipaddress0_   cross join MD_DISTRICT district1_  where ipaddress0_.CN_CITY_ID=district1_.CN_ID  and INET_ATON('202.96.64.68')>=ipaddress0_.CN_IP1_LONG  and INET_ATON('202.96.64.68')<=ipaddress0_.CN_IP2_LONG limit 1 

欢迎大家阅读《请问:怎么优化这条sql》,跪求各位点评,by 搞代码

这条语句在mysql里查询第一次是3秒多、第二次才是0.3秒左右、

所以想问下有没有优化该sql的途径?

另外该语句写在java的程序里、使用基本的connection 和perparstatement 进行查询、每次都是3秒左右、
感觉perparstatement 根本没有预编译过、

如果有优化的方式可以告诉我下、先谢谢各位了、

——解决方案——————–
建立冗余字段,保存INET_ATON(IP)的值,在此字段上建立索引
——解决方案——————–
我ip表建立了索引、
贴索引
SHOW INDEX FROM tbl_name
——解决方案——————–
explain sql语句,贴结果
——解决方案——————–
贴一下索引show index from tb
——解决方案——————–
你的索引已经全了,没什么可优化的了。语句本身也没什么可改进的。
——解决方案——————–
在WHERE 中用了函数,无法用到索引,要用到索引,用1楼的方法,增加字段


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:请问:怎么优化这条sql

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址