Re: [讨论] 需要下条件的字段太多

楼主: diamondking (迷惘)   2014-12-05 17:14:49
或许可以从两个方面来解决。
1、分割table。
会查超久,除了条件复杂外,资料量肯定也多。
看有没有什么属性是可以用来拆成几张table,让资料大量减少的。
例如“料件的生产日期”?会不会很多旧的料件已经很少在用或很少会查的,
通通移到另一个table。
或是某个属性的值是有限,且必选的,
例如料件的“种类”可能固定就是50个,而且在查询时是必填的,
那就拆成50张table来放。
2、设几个常用的index,index是多个常用条件的组合。
如果有些条件是查询时必填的话更好,一定要设成index。
另外注意一点,当user选完所有的条件,你要组成sql的时候,
与index有关的条件,要自动排在where的最前面,以让DB去使用到你设的index。
如此多的查询条件,我猜sql只能用程式动态组出来会比较灵活,
所以程式里要写一堆if...else来判断和尽量组合出能用上index的where条件。
index的设计需要一些经验,有些字段不适合,或是有的要排前,有的要排后,
我不晓得你之前有没有碰过。
※ 引述《bohei (run and fall)》之铭言:
: 大家好 目前遇到的问题很简单也很复杂XD
: 例如料件表,光描述这颗料件的属性就有50~60的字段
: 当要对料件下详细的条件时,势必要对这几十个字段下条件
: WHERE条件就长长串,也影响到查询的速度...
: 不知道遇到这情形,大家是怎么克服的?
: ##
: 补充:
: 条件会是一组一组的,可能分成几十组条件(每一组条件就是下几十个字段)..
: 这几十组跑完都天黑了..XD
: ##
: 谢谢!
作者: GoalBased (Artificail Intelligence)   2014-12-05 17:27:00
不太懂为什么种类要拆成50个table1,种类A 2,种类B 这样要拆开成不同table的意思吗?
作者: bohei (run and fall)   2014-12-05 18:49:00
嗯,应该是那个意思,以种类分成各个table回原PO:谢谢,不过公司的产品其实已经有一套完整的架构了料号这table实在是不太可能再去动到架构,再说料号的table在......我另外回一篇文提出我的想法~
作者: sai25 (hyde)   2014-12-08 13:13:00
拆table效能会更差

Links booklink

Contact Us: admin [ a t ] ucptt.com