Oracle的索引类型

12月 31st, 2009 | Posted by | Filed under 数据库

荣耀属于:Tomas Zhang

逻辑上:

  • Single column 单行索引
  • Concatenated 多行索引
  • Unique 唯一索引
  • NonUnique 非唯一索引
  • Function-based函数索引
  • Domain 域索引

物理上:

  • Partitioned 分区索引
  • NonPartitioned 非分区索引
  • B-tree:
    • Normal 正常型B树
    • Rever Key 反转型B树
    • Bitmap 位图索引

索引结构:

  • B-tree:
    • 适合与大量的增、删、改(OLTP);
    • 不能用包含OR操作符的查询;
    • 适合高基数的列(唯一值多);
    • 典型的树状结构;
    • 每个结点都是数据块;
    • 大多都是物理上一层、两层或三层不定,逻辑上三层;
    • 叶子块数据是排序的,从左向右递增;
    • 在分支块和根块中放的是索引的范围;
  • Bitmap:
    • 适合与决策支持系统;
    • 做UPDATE代价非常高;
    • 非常适合OR操作符的查询;
    • 基数比较少的时候才能建位图索引;

树型结构:

  • 索引头:
    • 开始ROWID,结束ROWID(先列出索引的最大范围);
  • BITMAP:
    • 每一个BIT对应着一个ROWID,它的值是1还是0,如果是1,表示着BIT对应的ROWID有值;
标签: ,

话说程序员的职业生涯

12月 24th, 2009 | Posted by | Filed under 随笔日记

(本文来自《程序员》杂志0811期)
http://www.programmer.com.cn/1462/

作者:IBM 软件集团大中华区总架构师 寇卫东寇卫东

有一些年轻的程序员向我咨询,将来的路应该怎么走?俗话说,条条大路通罗马。不同的路都能走向成功。到底选哪条路,取决于自己的兴趣。可能有程序员会问:如果还没找到自己的兴趣怎么办?我的建议是多尝试,努力做,这是职业生涯的必经之路。当你积累了一定的技术和经验之后,就会面临多种选择。选择哪条路,因人而异。
阅读全文…

最近不爽的事情

12月 22nd, 2009 | Posted by | Filed under 数据库

遇到很多不爽的事情,必须发泄一下了,不然要疯了。

数据库中发现以前的天才们竟然用VARCHAR存数字,SMALLINT范围内的数字,用了VARCHAR(100)的类型,我想问你们想干嘛?
慢查中不少SQL是因为这种字段引起的,建索引吧,key_len太长,效率很低,不建索引一样效率低。ALTER成数字类型吧,代码中竟然是用=’XXX’写的。
改代码吧,数据层分离又做一半就没人做了,程序中到处都分布着这种SQL。让我怎么优化,怎么优化?!

有的字段,只有0和1两个值,却用int类型,1个字节能解决的问题非要搞成4个字节!有的字段,明明只有几个值,却非得用VARCHAR存,ENUM我在培训中已经讲过了。
行,我来改。想知道某个字段可能有几个值,一问没一个人知道,我怎么改?!

要求注释数据库,做完了一看跟数据库中的字段值根本对不上,一问,谁也不能保证数据库注释的准确性,建表的人已经离职了,我真的是要崩溃了。

有的数据表堆了几年的数据,想分离,程序员怕麻烦要改程序,程序中没有注释,不知道水平拆分后要改哪些地方,系统会挂掉,好吧,那就不改了,天天进慢查我也没办法。

我很想知道我下一步工作怎么展开?!我很想干活,但是现在我找不出活可干!任何一点改动都可能引起谁也不知道的结果,却没有人愿意去知道,让我一个人去看懂这整个庞大无注释的系统代码,我不是神……

我比较容易激动……

标签:

给MySQL做虚拟的“函数索引”

12月 21st, 2009 | Posted by | Filed under 数据库

对于带有列的函数计算的SQL,MySQL是无法使用索引的,MySQL并没有Oracle中的函数索引,
例如:

SELECT *
FROM table_1
WHERE func_1(col_1) < const_1
AND  func_2(col_2) = const_2
ORDER BY func_1(col_1);

阅读全文...

gFTP目录乱码问题

12月 20th, 2009 | Posted by | Filed under 操作系统

看MySQL的文档有些累了,想下载个电影看看,遂上学校FTP
看了看Linux下FTP客户端的比较,最终选了gFTP,虽然ftp命令也能下,毕竟电脑是拿来用的不是来装B的,能省事的还是省事点。
结果登录上学校的FTP,gFTP中目录全都不显示,遂Google之。
有的人说改/usr/bin/gftp脚本,加入export LANG=zh_CN.GBK,并且用locale-gen zh_CN.GBK,不过经我实测是不行的。在日志里看获取的目录是可以正常显示,但是界面里还是不行,有的人说是gtk1和gtk2的问题之类的,我觉得应该是扯淡。
然后又看了些解决方案,说locale-gen zh_CN,光GBK没用,然后改.gftp/gftprc,在remote_charset加入gbk,gb2312,utf8等字符集,并且把export LANG改为了zh_CN,实验之,一切OK。
整理步骤就是:
locale-gen zh_CN (我不确定locale-gen zh_CN.GBK是否也必要)
在/usr/bin/gftp中加入export LANG=zh_CN。(我不确定在.gftp/gftprc中的remote_charset加入gbk等是否必要)
遇到类似情况,自己尝试吧,毕竟每个人情况可能不一样,我这里给出的是我已经解决的,我的系统是Ubuntu 9.10 64bit Gnome。

下载《世界大战》ing,最近被某人带的对2012,宇宙,外星人之类的东西很感兴趣,额……好像一致很感兴趣……

标签: , ,