2013-03-28 47 views
1

我有一個50MB的sqlite數據庫。我想運行一個查詢或報告來指出哪些表/列/行正在存儲多少數據。有沒有辦法查詢一個特定的表或列在sqlite中存儲多少數據?

我的目的是優化我怎麼了存儲數據,減少數據庫的足跡。

我熟悉的真空命令SHINK數據庫。但我有興趣改進對我存儲的圖像和其他數據的壓縮,並希望能夠測量前後的結果,並將我的努力目標定位在最具生產力的地方。

任何查詢或工具(免費或以其他方式)能夠完成,這將滿足的問題。

我正在使用sqlite3。

+0

真空後文件系統的大小是衡量這一點的實用方法嗎? – 2013-03-28 04:53:10

+0

是的,對於表格/列/字段/行,我知道佔用的空間最多。它足夠大的模式,我想知道在哪裏尋找優化領域。我可能只關注一個表/列,而不會意識到另一個表是真正的數據集。 – Mike 2013-03-28 04:55:51

+0

我想你必須在之前和之後抽真空,如果你期望它是活躍的,這是不切實際的。 – 2013-03-28 05:01:36

回答

2

sqlite3_analyzer顯示多少空間表和索引佔用。

+0

這是一個尷尬的時刻,當我發現,現在大家都使用64位Linux,但sqlite3的下載頁面提供了二進制的x86 Linux和Windows,並沒有這樣的軟件包在Ubuntu中,並沒有簡單的方法來構建:( – tdihp 2013-12-25 03:26:52

+0

@tdihp要問如何建立'sqlite3_analyzer',使用「Ask Question」按鈕。 – 2013-12-25 08:39:48

+0

感謝您提及,我已經成功構建了sqlite3_analyzer。這不僅僅是我所期望的,這樣的工具非常有用。 – tdihp 2013-12-25 08:53:04

1

這應該工作。

SELECT SUM(len) FROM (
    SELECT length(column_name) AS len FROM table_name); 
+0

這是一個很好的答案。我用它來確定哪些列正在使用給定表上的空間最多。我從CL中選擇了答案,因爲它按表提供了整個數據庫表的完整列表。從那裏,如果我需要進一步研究,我使用您提供的查詢。感謝您花時間發佈答案。 – Mike 2013-03-29 01:07:34

相關問題