sqlite使用的一些技術積累

2021-08-08 19:32:27 字數 1119 閱讀 8201

sqlite的**,有時只是作為中間狀態儲存時,可以採用temporary table,這種**存在記憶體中,不消耗io操作,速度快。在pc中,temporary table和普通table速度,我測試的是3:8。製作temporary table時,cpu 100%消耗,因此,瓶頸在cpu不是記憶體,如果有更快的cpu,temporary table會更快。在cortex a8的單板上,兩種**的速度幾乎是一樣的,因為嵌入式的cpu太弱了,發揮不了臨時表的優勢。

sqlite資料庫,刪除或drop table後,體積並不會減少。必須使用vacuum指令才能減少體積。原因是,sqlite資料庫會保留已分配的空間,所以刪除後不會減少,vacuum會重新生成排列緊緻資料庫,體積就下來了。 

sqlite建立列名時,如果列名包含了()括號,那麼語句會出錯,因為和create table()這個括號無法區分。只要在列名外面加入方括號即可,說明括號裡的是列名,列名就可以使用()了。

sqlite有個特殊的**叫sqlite_master,記錄著所有建立的**(包含觸發器)的資訊,它包含type,name,tbl_name,rootpage(integer),sql的資訊;臨時表則從sqlite_temp_master中找。 

建立主鍵應該遵循的原則**)

1. 主鍵應當是對使用者沒有意義的。如果使用者看到了乙個表示多對多關係的連線表中的資料,並抱怨它沒有什麼用處,那就證明它的主鍵設計地很好。2. 永遠也不要更新主鍵。實際上,因為主鍵除了唯一地標識一行之外,再沒有其他的用途了,所以也就沒有理由去對它更新。如果主鍵需要更新,則說明主鍵應對使用者無意義的原則被違反了。注:這項原則對於那些經常需要在資料轉換或多資料庫合併時進行資料整理的資料並不適用。3. 主鍵不應包含動態變化的資料,如時間戳、建立時間列、修改時間列等。4. 主鍵應當由計算機自動生成。如果由人來對主鍵的建立進行干預,就會使它帶有除了唯一標識一行以外的意義。一旦越過這個界限,就可能產生認為修改主鍵的動機,這樣,這種系統用來鏈結記錄行、管理記錄行的關鍵手段就會落入不了解資料庫設計的人的手中。

圖形化介面,推薦使用sqliteman取代sqlitebrower,後者一直沒有正式版,sql語句出錯會假死。sqliteman是跨平台的,可以解決sqlitebrower的問題,同時,介面更易操作。ubuntu安裝:sudo aptitude install sqliteman 

c 的一些積累

combobox 控制項 this.combobox1.tabindex 1 this.combobox1.items.add com0 combobox1.selecteditem.tostring int index combobox1.selectedindex string 字串操作 字串 ...

SQLite使用的一些問題

1 檢視裡支援as也支援 表名.欄位名 這種寫法 create view 檢視名稱 as select 專案列表.專案id as 序號,專案列表.專案名 as 姓名,屬性分類列表.屬性名 as 屬性名,屬性值列表.屬性值 as 屬性值 from 專案列表,屬性值列表,屬性分類列表 where 屬性值...

公司內部技術積累的一些思考

很多小問題是大家習慣直接找到對應的負責人解決。對這個具體問題來說,當面溝通確實是最高效的,但沒有形成積累,只有直接參與這個問題的人知道問題的存在和解法。一旦人員調動就沒人知道了,或者時間久了連參與者自己都忘了。當然,問題本身是否需要被記錄,也是需要評判的。有些問題,確實參考意義不大。內部的研發系統上...