從沒有存儲varchar或其他可變長度數據的表讀取數據通常會更快嗎?在MySQL中,這是更快的,因爲它可以準確計算行將存儲在磁盤上的位置。從SQLite中的固定寬度列讀取速度更快嗎?
6
A
回答
13
這個問題在SQLite的上下文中沒有意義,因爲它只支持單個TEXT
字段類型。這裏不存在「固定寬度」與「可變長度」的區別。
儘管SQLite會讓你將字段定義爲具有特定類型,但所有這些都是(至多)設置該字段的首選項以便在存儲模糊數據時使用的類型(例如,是否將「3」存儲爲INTEGER,REAL或TEXT)。您仍然可以在任何SQLite字段中存儲任何類型的數據,而不管其類型。
具體涉及CHAR與VARCHAR,http://www.sqlite.org/datatype3.html告訴我們:
如果列 聲明的類型包含字符串的 「CHAR」, 「CLOB」 或 「TEXT」 那麼列有 TEXT親和力。請注意,類型 VARCHAR包含字符串「CHAR」,因此 被分配了TEXT關聯。
5
由於SQLite uses variable-length records只,我猜他們沒有實現固定寬度的查找優化,當行長度相同。
而且正如Dave指出的,人們仍然可以在INT字段中存儲文本。由於SQLite never truncates data,這意味着SQLite允許像INT一樣固定寬度的列來存儲可變長度的數據。所以不可能實現固定寬度的查找優化。
相關問題
- 1. 速度更快嗎?
- 2. XML Schema使閱讀速度更快嗎?
- 3. Octave/Matlab - 讀取固定寬度文件
- 4. 閱讀固定寬度格式,其中寬度從列標題推斷
- 5. 固定寬度的jqgrid列?
- 6. 使文件讀取速度更快
- 7. 讀取大量數據時速度更快:XML或SQLite
- 8. 固定寬度的Ffmpeg更改高度
- 9. 使用更快的速度生成CSV時設置列寬度
- 10. 跨度的固定寬度?
- 11. 固定更新速度
- 12. 固定寬度
- 13. 固定寬度
- 14. 固定寬度
- 15. 從大文件中讀取字符串的速度更快
- 16. 表列固定寬度
- 17. 從文本文件中讀取多行固定寬度記錄
- 18. 從文本文件中讀取固定寬度記錄
- 19. 如何從Perl中的固定寬度格式中提取列?
- 20. 從HTML頁面讀取固定寬度格式的文本表
- 21. CSS固定寬度跨度
- 22. XAML GridView中的固定寬度列
- 23. html表中列的固定寬度
- 24. 帶固定寬度列的表格 - 不指定表格寬度
- 25. 快速重置固定寬度的2d鋸齒陣列的方法
- 26. fancybox2固定寬度
- 27. 固定寬度格
- 28. PDF.js固定寬度
- 29. UILabel固定寬度/固定高度獲取文本編號
- 30. 固定寬度div div寬度div?
但我也可以從表中刪除所有text/varchar/char列。這將是固定的寬度。我的問題是這樣做是否能夠更快地搜索列(除了它只是很小)。 – David 2010-12-14 12:24:22
不,它不會。正如鏈接文檔所解釋的,SQLite使用動態字段類型。即使您將字段聲明爲INTEGER,您仍然可以存儲浮點數,文本或甚至斑點。 「INTEGER」聲明爲該字段提供了將數據存儲爲整數的優先選擇,但不會將其限制爲整數。它仍然是一個可變寬度的列/記錄。 (這甚至忽略了INTEGER在SQLite中不固定大小的細節......) – 2010-12-14 14:02:43