天天看點

火線救急!十萬火急。今天一做工控哥們問我,Sqlite查詢幾百條記錄,速度奇慢,他的軟體是工控機上一個工具,今天查詢資料

作者:程式猿海哥

火線救急!十萬火急。

今天一做工控哥們問我,Sqlite查詢幾百條記錄,速度奇慢,他的軟體是工控機上一個工具,今 天查詢資料特别的慢,就幾百條記錄,也要5、6秒出來,百思不得其解。我調笑他說:“兄弟,你是不是上衛生間不記得洗手了”。

此時他苦笑,搞不好,要挨批了。沒辦法,既然是江湖救急,那就來點真的吧?

1、建表代碼:(總體來說沒發現什麼大問題!)

 strSqlCMD = "CREATE TABLE IF NOT EXISTS SCGC_DataTB(id INTEGER PRIMARY KEY AUTOINCREMENT ,dateTime TEXT,userInfor TEXT,str_MJH VARCHAR(30),str_DDH VARCHAR(30),str_PFM VARCHAR(30),str_prodCnt VARCHAR(30),str_workMode VARCHAR(30)," +

                "param_1 VARCHAR(30),param_2 VARCHAR(30),param_3 VARCHAR(30),param_4 VARCHAR(10),param_5 VARCHAR(10),param_6 VARCHAR(10),param_7 VARCHAR(10),param_8 VARCHAR(10),param_9 VARCHAR(10),param_10 VARCHAR(10)," +

                 "param_11 VARCHAR(10),param_12 VARCHAR(10),param_13 VARCHAR(10),param_14 VARCHAR(10),param_15 VARCHAR(10),param_16 VARCHAR(10),param_17 VARCHAR(10),param_18 VARCHAR(10),param_19 VARCHAR(10),param_20 VARCHAR(10)," +

                    "param_21 VARCHAR(10),param_22 VARCHAR(10),param_23 VARCHAR(10),param_24 VARCHAR(10),param_25 VARCHAR(10))";

            Public.SQLiteHelpers.ExecuteNonQuery(strSqlCMD, null);

2、查詢語句:

sqlCMD = "SELECT * FROM SCGC_DataTB " + whereCMD + " ORDER BY id DESC LIMIT 0,50";

DataSet dataSet = Public.SQLiteHelpers.ExecuteDataSet(sqlCMD, null);

一眼看到大問題,有經驗的程式員知道,查詢語句時,不要為了省事,千萬别用*代替了具體的字段。我這位工控朋友,平時他們資料量不太,是以估計沒在意。這次翻船了,好了知道原因,那就好辦了。

1、去掉*号,用具體字段代替。

2、優化操作資料庫Sqlite類。

3、取消DataGridView所有行與列的自适應。

4、綁定資料源時,在工控機裡,盡量不要用線程。

好的,廢說就說這麼多啊!問題已經解決,大功完成,問個紅包先。

火線救急!十萬火急。今天一做工控哥們問我,Sqlite查詢幾百條記錄,速度奇慢,他的軟體是工控機上一個工具,今天查詢資料
火線救急!十萬火急。今天一做工控哥們問我,Sqlite查詢幾百條記錄,速度奇慢,他的軟體是工控機上一個工具,今天查詢資料
火線救急!十萬火急。今天一做工控哥們問我,Sqlite查詢幾百條記錄,速度奇慢,他的軟體是工控機上一個工具,今天查詢資料

繼續閱讀