千萬級的資料量,我們的sql怎麼優化呢?

2021-10-03 20:41:42 字數 1219 閱讀 2931

現在的公司資料量一般都比較大,當我們需要同此多個讀資料庫的操作,會出現什麼樣的情況呢?

string sql ="insert into info (id,name,age,card,otherinfo)values("+i+",'我是第"+i+"個',"+i%100+",'dsfs"+i+i%37+"','其他資訊')";

mysql.add(sql);

if(i%100==0)

這樣寫字串拼接的話,我們用for迴圈去插入資料,這樣的操作可能會出現執行緒池放不下的原因,我們會進行頻繁的連線資料庫,釋放連線等。

那麼我們要怎麼進行優化呢?

long time=system.currenttimemillis();

for(int k=1;k<=500;k++) { 

stringbuilder sql =new stringbuilder("insert into t_userinfo (id,name,age,card,otherinfo)values");

int start=k*20000;

for(int i=start;i<=start+20000;i++) {

我們可以利用stringbuilder進行字串的拼接,這樣我們只進行一次資料庫連線和釋放。

當我們原資料有400萬,3個索引時,我們進行新增

我們會發現,我們增加的速度600w的資料量之後,增加速度變慢。

那如果我們只有乙個索引呢?

由此可見,我們新建的索引太多,也會對我們的增加速度有影響。

當我們用50個執行緒去訪問我們資料,速度又如何呢?

可見速度變化不大,查詢時間小於1s,我們還是可以接受的。

千萬級資料量怎麼做分頁查詢

隨著資料量的增長,分頁數量自然也越來越多,可以通過子查詢的方式提公升分頁效率。在基本查詢的基礎上,先通過乙個子查詢檢索出該頁的起始主鍵id,然後作為主查詢where語句條件進行再次檢索。select from table where id select id from table limit off...

oracle千萬級資料量的表關聯更新

查詢資料庫中的鎖 select sess.sid,sess.serial lo.oracle username,lo.os user name,ao.object name,lo.locked mode from v locked object lo,dba objects ao,v session...

sql中的大資料量資料提速

最近做個專案接近千萬條資料,對資料的讀取速度,要求比較高。對此作了乙個簡單的總結。1.sql語句書寫的我們應該注意,盡量少使用in or 和虛擬表。也有高人說,盡量多使用臨時表能夠減少磁碟的i o操作,這個還有待驗證 2.建立索引,通常我們會把,聚集索引建立在使用多,但出現少的字段上。例如 時間 3...