查询视图时不使用索引

今天发生了一件很诡异的事情,平台网关有一张对外提供的视图,用某字段进行查询时,效率奇低无比。

--view
select * from user1.view1 v1 where v1.mark='mark001';
--table
select * from user1.table1 t1 where t1.mark='mark001';

分析视图对应的表信息后发现,虽然对mark字段建立了索引,但查询语句中使用的mark字段值“mark001”,
所占比例竟然已经达到40%,应该是历史数据导致的。

然后将历史数据处理后,重建mark字段索引,诡异的事情发生了:
即使mark字段值“mark001”的比例小于0.1%,查询依然不走索引。

重建索引无效,就差重新建表了,压力山大啊。

最后,休息了一下,抱着试试看的态度,重新分析了表table1:

analyze table user1.table1 compute statistics for table for all indexes for all indexed columns;

查询终于走索引了,速度立刻上去了。

这才记起来,前几天,按某人的建议,把oracle的统计信息关掉了。。。
自己挖坑把自己埋了。。。
四个小时啊。。。
我的考评还没来得及写,还有十几封邮件要写,悲剧啊~~
我恨某潘~~

Java HTTP Premature EOF

这几天在调试HTTP通讯的时候,偶尔会发生下面的异常:
java.io.IOException: Premature EOF

主要原因是:
client在读取server返回的文件时,本来已经读完,但client又去读了一次
此时,就会抛出上面的异常

另外,公司搬家后,测试Java取回文件的效率,会出现两种诡异的延时:
1、打开输入流的时候,奇慢无比,要3~4s
2、在从输入流中读取时,不时会有200ms的奇怪延时
在不同的客户端机器上,从同一个服务端取回,会有不同的表现
貌似和客户端操作系统种类和JDK版本都有关,总之很诡异了。

唉~~,时间紧迫,只好找了其他方法解决

有人说是HTTP头设置问题,有人说是IPV6问题,试过后,问题依旧啊。

CDatabase中Open与OpenEx

昨天帮同事调试一段Windows服务代码,
其实很简单,但诡异的是,在服务中一直无法Catch到数据库无法连接的错误。

一开始,我以为他没有加载资源,少了:

AfxSetResourceHandle(GetModuleHandle(NULL));

这句话

后来发现,错误根本无法catch到,运行后直接向死了一样,等了几分钟还是这样
后来仔细看了下代码

db.OpenEx(szConnect);

天啊
直接换成

db.Open(szConnect);

问题解决。

Service里弹什么对话框啊,晕。

VPN有效,SVN连不上

这同样是一个超级悲剧的事情,在同事家,连上了公司VPN,
准备上传代码,但SVN无论如何都告诉我,“俺找不到服务器啊”

这个。。。

我刚在宾馆就是可以连上的,而且速度也很快。
那就找原因吧。

同样是ipconfig -all一下,发现,妈呀,
这些人居然把路由的网段和公司内部网段设成了相同的

不由倒吸一口凉气,
你用固定IP也就罢了,麻烦一些我也忍了,
可以用DCHP为什么还要用同一个网段啊

哥哥们啊。。。

能获取IP却连不上互联网

由于公司项目需要外出,就在一家宾馆住下了,闲着无聊,就连上网线准备看看新闻。
把IP地址获取模式设为DHCP,IP也正常获取到了,192.168.1.???,但无论如何都连不上网
打电话向前台确认,他们百般保证,绝对可以上网。

于是ipconfig -all一下,发现,居然没有网关。
这个可是个大悲剧了。

查了整整半个小时,发现:
天啊,居然是因为,VMWare的一块网卡的地址竟然是192.168.1.1

面壁去了。。。

话说回来,这不是第一次了
前几个月在EMC测试产品的时候,
别人的笔记本都可以联网,就是我的没反应
同样是因为这块VMWare的虚拟网卡

继续面壁。。。