|
原帖由 WESTLIFE_XU 于 2008-1-21 10:36 发表 ![]()
我明白的说了,把inner join改为等号 可读性上会好很多,没有说会有性能上的提高。
性能提高在于where后面的条件。
你自己可以简单的判断一下:
select work_status_id,count(*) from i1 group by work_status_id。 看看work_status_id=2在整个表中占了多少的数据。同理也可以count(*)其他表的数据。 假设每个表都返回1000条,就算五个表吧。这个sql需要运行1000^5次数,那肯定不会很快了。这时候你要从应用层面上去考虑了
恩,明白
但是我有个问题,我这有的表就是有一些flag的列,里面的值呢无非就是1,2,3,4之类的,每个都有特别的含义
查询的时候呢又经常会用到,那我如何建立索引呢?
首先数据的选择性并不很好,而且即使就这么几个值,数据也不是均匀分布,比如很可能50%的数据集中在col=1,1%的数据集中在col=4,其次如果在oracle下建立bitmap索引的话,有可能引起死锁问题(这个问题我在工作中遇到过),再者mysql根本也不支持bitmap索引啊,各位有啥好办法么? |
|