我的數(shù)據(jù)庫(kù)是:mysql
一張表的數(shù)據(jù)上了千萬(wàn)行,而且每天都以10幾萬(wàn)行在增張。
目前需要解決的問(wèn)題,我的頁(yè)面在做幾個(gè)字段的查詢的時(shí)候顯示出來(lái)居慢,我用的是java,沒(méi)用
什么框架,直接JDBC查詢。
大家有什么好方法沒(méi)?
我目前想這樣搞下:寫個(gè)存儲(chǔ)過(guò)程,JAVA調(diào)存儲(chǔ)過(guò)程返回的數(shù)據(jù)集(集合),應(yīng)該快的多,
但是mysql可以返回來(lái)數(shù)據(jù)集嗎,java代碼怎么得到?又不太好搞?
這樣的問(wèn)題大家應(yīng)該碰到過(guò),有經(jīng)驗(yàn)的朋友們請(qǐng)告訴下,謝謝大家?
問(wèn)題補(bǔ)充:
我的SQL語(yǔ)句里面用了日期函數(shù)判斷,在日期上建立索引,會(huì)失效嗎?
比如:......where ((TRUNC(IMMS_REPORT_REALSEND.DATCREATE) >= TRUNC(sysdate))
采納的答案
2008-12-15 binlinux (初級(jí)程序員)
最好是拆分表,將歷史數(shù)據(jù)移走
提問(wèn)者對(duì)于答案的評(píng)價(jià):
我就這樣做算了.
其他回答
可以拆分表~
czx566 (初級(jí)程序員) 2008-12-11
一次取超過(guò)1W行的數(shù)據(jù),估計(jì)是用INDEX的效果也好不到哪兒去。
sdh5724 (資深程序員) 2008-12-11
如果你不要一次看全部數(shù)據(jù)的話,可以做個(gè)類似分頁(yè)的東西,這樣結(jié)果集的數(shù)據(jù)不會(huì)一次全部返回,每次返回的只是你設(shè)定的一頁(yè)要顯示的數(shù)據(jù)條數(shù)。
enetor (初級(jí)程序員) 2008-12-11
建議對(duì)在數(shù)據(jù)庫(kù)設(shè)計(jì)上做些文章。
比如可以考慮對(duì)表進(jìn)行“橫向分割”或“縱向分割”。
可以把你的表結(jié)構(gòu)和業(yè)務(wù)拿出來(lái)討論下。
pangyi (初級(jí)程序員) 2008-12-11
建立索引是唯一辦法
墓里活人 (資深程序員) 2008-12-11
樓主是MYSQL!
千萬(wàn)級(jí)別的數(shù)據(jù)量對(duì)mysql就是一個(gè)嚴(yán)峻的考驗(yàn)!
不推薦索引!
還是推薦分表!
czx566 (初級(jí)程序員) 2008-12-11
mysql有函數(shù)索引么。。。。。
1000W數(shù)據(jù), 目前的機(jī)器輕松應(yīng)付的。
1?!?span lang="EN-US">IMMS_REPORT_REALSEND.DATCREATE 現(xiàn)建立索引
2?!?span lang="EN-US">TRUNC這么用不對(duì)的, 你可以先計(jì)算一個(gè) sysdate 當(dāng)天00:00:00的時(shí)間,然后再比較, 這樣就對(duì)了。
sdh5724 (資深程序員) 2008-12-11
to 墓里活人:
從戰(zhàn)術(shù)上來(lái)說(shuō),建立索引是個(gè)不錯(cuò)的辦法。
從戰(zhàn)略上來(lái)說(shuō),數(shù)據(jù)分割是明智之舉。
pangyi (初級(jí)程序員) 2008-12-11
現(xiàn)在我也遇到了這樣的問(wèn)題,用得方法就是分表,按天日期來(lái)分表,每天一張表。不過(guò)這樣查詢就有點(diǎn)問(wèn)題了,正在想辦法解決.........
qiaoakai (初級(jí)程序員) 2008-12-11
引用
現(xiàn)在我也遇到了這樣的問(wèn)題,用得方法就是分表,按天日期來(lái)分表,每天一張表。不過(guò)這樣查詢就有點(diǎn)問(wèn)題了,正在想辦法解決.........
不建議采用時(shí)間來(lái)分表,一天一張表,維護(hù)程序比較復(fù)雜。
建議從業(yè)務(wù)上做劃分。以電廠的運(yùn)行數(shù)據(jù)為例。電廠運(yùn)行時(shí),有很多測(cè)點(diǎn)。測(cè)點(diǎn)的數(shù)據(jù)是以秒為單位產(chǎn)生的。若將這些數(shù)據(jù)都放到一張表中,一年下來(lái)至少有上億條數(shù)據(jù)。電廠一般至少有20000多個(gè)測(cè)點(diǎn)。但若給每個(gè)測(cè)點(diǎn)建立一張數(shù)據(jù)表,則數(shù)據(jù)量會(huì)分解到20000多張表中,每張表里的數(shù)據(jù)一年下來(lái)也就數(shù)十萬(wàn)而已。從應(yīng)用的角度,也可以很好的對(duì)數(shù)據(jù)進(jìn)行分析和管理。
pangyi (初級(jí)程序員) 2008-12-12
用日期函數(shù)的時(shí)候不會(huì)用到索引
waterdh (中級(jí)程序員) 2008-12-12
建議分割表
queue19 (初級(jí)程序員) 2008-12-12
可以每天晚上對(duì)數(shù)據(jù)進(jìn)行合并,匯總到另外一張或幾張表中,比如日表,月表.
大力水手 (初級(jí)程序員) 2008-12-12
TOBAO也是用MYSQL的 先看看業(yè)務(wù)允許分表不,如果不允許 那么建議你把時(shí)間判斷的給去掉 你取的記錄應(yīng)該不多,如果多就分次取,在內(nèi)存里面進(jìn)行判斷 這樣可能會(huì)快點(diǎn)。不要讓INDEX失效。
fjlyxx (中級(jí)程序員) 2008-12-13
根據(jù)查詢條件加index..