最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQLite教程(五):索引和數(shù)據(jù)分析/清理

 更新時間:2015年05月04日 16:11:48   投稿:junjie  
這篇文章主要介紹了SQLite教程(五):索引和數(shù)據(jù)分析/清理,本文講解了創(chuàng)建索引、刪除索引、重建索引、數(shù)據(jù)分析、數(shù)據(jù)清理等內(nèi)容,需要的朋友可以參考下

一、創(chuàng)建索引:

    在SQLite中,創(chuàng)建索引的SQL語法和其他大多數(shù)關(guān)系型數(shù)據(jù)庫基本相同,因為這里也僅僅是給出示例用法:
 

復制代碼 代碼如下:

    sqlite> CREATE TABLE testtable (first_col integer,second_col integer);
    --創(chuàng)建最簡單的索引,該索引基于某個表的一個字段。
    sqlite> CREATE INDEX testtable_idx ON testtable(first_col);
    --創(chuàng)建聯(lián)合索引,該索引基于某個表的多個字段,同時可以指定每個字段的排序規(guī)則(升序/降序)。
    sqlite> CREATE INDEX testtable_idx2 ON testtable(first_col ASC,second_col DESC);
    --創(chuàng)建唯一性索引,該索引規(guī)則和數(shù)據(jù)表的唯一性約束的規(guī)則相同,即NULL和任何值都不同,包括NULL本身。
    sqlite> CREATE UNIQUE INDEX testtable_idx3 ON testtable(second_col DESC);
    sqlite> .indices testtable
    testtable_idx
    testtable_idx2   
    testtable_idx3
 

    從.indices命令的輸出可以看出,三個索引均已成功創(chuàng)建。
   
二、刪除索引:

    索引的刪除和視圖的刪除非常相似,含義也是如此,因此這里也只是給出示例:

復制代碼 代碼如下:
  
    sqlite> DROP INDEX testtable_idx;
    --如果刪除不存在的索引將會導致操作失敗,如果在不確定的情況下又不希望錯誤被拋出,可以使用"IF EXISTS"從句。
    sqlite> DROP INDEX testtable_idx;
    Error: no such index: testtable_idx
    sqlite> DROP INDEX IF EXISTS testtable_idx;

三、重建索引:

    重建索引用于刪除已經(jīng)存在的索引,同時基于其原有的規(guī)則重建該索引。這里需要說明的是,如果在REINDEX語句后面沒有給出數(shù)據(jù)庫名,那么當前連接下所有Attached數(shù)據(jù)庫中所有索引都會被重建。如果指定了數(shù)據(jù)庫名和表名,那么該表中的所有索引都會被重建,如果只是指定索引名,那么當前數(shù)據(jù)庫的指定索引被重建。
 

復制代碼 代碼如下:

    --當前連接attached所有數(shù)據(jù)庫中的索引都被重建。
    sqlite> REINDEX;
    --重建當前主數(shù)據(jù)庫中testtable表的所有索引。
    sqlite> REINDEX testtable;
    --重建當前主數(shù)據(jù)庫中名稱為testtable_idx2的索引。
    sqlite> REINDEX testtable_idx2;
   

四、數(shù)據(jù)分析:

    和PostgreSQL非常相似,SQLite中的ANALYZE命令也同樣用于分析數(shù)據(jù)表和索引中的數(shù)據(jù),并將統(tǒng)計結(jié)果存放于SQLite的內(nèi)部系統(tǒng)表中,以便于查詢優(yōu)化器可以根據(jù)分析后的統(tǒng)計數(shù)據(jù)選擇最優(yōu)的查詢執(zhí)行路徑,從而提高整個查詢的效率。見如下示例:
 

復制代碼 代碼如下:

    --如果在ANALYZE命令之后沒有指定任何參數(shù),則分析當前連接中所有Attached數(shù)據(jù)庫中的表和索引。
    sqlite> ANALYZE;
    --如果指定數(shù)據(jù)庫作為ANALYZE的參數(shù),那么該數(shù)據(jù)庫下的所有表和索引都將被分析并生成統(tǒng)計數(shù)據(jù)。
    sqlite> ANALYZE main;
    --如果指定了數(shù)據(jù)庫中的某個表或索引為ANALYZE的參數(shù),那么該表和其所有關(guān)聯(lián)的索引都將被分析。
    sqlite> ANALYZE main.testtable;
    sqlite> ANALYZE main.testtable_idx2;

五、數(shù)據(jù)清理:

    和PostgreSQL中的VACUUM命令相比,他們的功能以及實現(xiàn)方式非常相似,不同的是PostgreSQL提供了更細的粒度,而SQLite只能將該命令作用于數(shù)據(jù)庫,無法再精確到數(shù)據(jù)庫中指定的數(shù)據(jù)表或者索引,然而這一點恰恰是PostgreSQL可以做到的。
    當某個數(shù)據(jù)庫中的一個或多個數(shù)據(jù)表存在大量的插入、更新和刪除等操作時,將會有大量的磁盤空間被已刪除的數(shù)據(jù)所占用,在沒有執(zhí)行VACUUM命令之前,SQLite并沒有將它們歸還于操作系統(tǒng)。由于該類數(shù)據(jù)表中的數(shù)據(jù)存儲非常分散,因此在查詢時,無法得到更好的批量IO讀取效果,從而影響了查詢效率。
    在SQLite中,僅支持清理當前連接中的主數(shù)據(jù)庫,而不能清理其它Attached數(shù)據(jù)庫。VACUUM命令在完成數(shù)據(jù)清理時采用了和PostgreSQL相同的策略,即創(chuàng)建一個和當前數(shù)據(jù)庫文件相同大小的新數(shù)據(jù)庫文件,之后再將該數(shù)據(jù)庫文件中的數(shù)據(jù)有組織的導入到新文件中,其中已經(jīng)刪除的數(shù)據(jù)塊將不會被導入,在完成導入后,收縮新數(shù)據(jù)庫文件的尺寸到適當?shù)拇笮?。該命令的?zhí)行非常簡單,如:
 

復制代碼 代碼如下:

    sqlite> VACUUM;

相關(guān)文章

  • SQLite教程(四):內(nèi)置函數(shù)

    SQLite教程(四):內(nèi)置函數(shù)

    這篇文章主要介紹了SQLite教程(四):內(nèi)置函數(shù),本文講解了聚合函數(shù)、核心函數(shù)、日期和時間函數(shù)、,需要的朋友可以參考下
    2015-05-05
  • SQLite3中的日期時間函數(shù)使用小結(jié)

    SQLite3中的日期時間函數(shù)使用小結(jié)

    這篇文章主要介紹了SQLite3中的日期時間函數(shù)使用小結(jié),同時介紹了一些SQLite數(shù)據(jù)庫的基本知識,需要的朋友可以參考下
    2014-05-05
  • SQLite教程(十二):鎖和并發(fā)控制詳解

    SQLite教程(十二):鎖和并發(fā)控制詳解

    這篇文章主要介紹了SQLite教程(十二):鎖和并發(fā)控制詳解,本文講解了鎖和并發(fā)控制機制概述、文件鎖、回滾日志、數(shù)據(jù)寫入、SQL級別的事務控制等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • SQLite數(shù)據(jù)庫管理系統(tǒng)-我所認識的數(shù)據(jù)庫引擎

    SQLite數(shù)據(jù)庫管理系統(tǒng)-我所認識的數(shù)據(jù)庫引擎

    SQLite是一款輕量級的、被設計用于嵌入式系統(tǒng)的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),SQLite 是一個實現(xiàn)自我依賴、純客戶端、零配置且支持事務的數(shù)據(jù)庫引擎
    2013-01-01
  • System.Data.SQLite 數(shù)據(jù)庫詳細介紹

    System.Data.SQLite 數(shù)據(jù)庫詳細介紹

    System.Data.SQLite是SQLite的加強版,它可以無需.NET Framework支持,由于它內(nèi)部包含了一個ADO.NET 2.0引擎,所以.NET開發(fā)人員可以利用System.Data.SQLite方便地開發(fā).NET程序。
    2011-02-02
  • Sqlite 操作類代碼

    Sqlite 操作類代碼

    這兩天用了用SQLite,感覺比SQL CE好用多了,最主要的是性能好多了.這一點對手持設備來講很重要.閑話少說,下來將怎么在WM用.NET CF訪問SQLite.
    2009-11-11
  • SQLite教程(九):在線備份

    SQLite教程(九):在線備份

    這篇文章主要介紹了SQLite教程(九):在線備份,本文講解了常用備份方法、在線備份APIs簡介、高級應用技巧等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • SQLite高手晉級教程:調(diào)試與性能優(yōu)化以及常見問題

    SQLite高手晉級教程:調(diào)試與性能優(yōu)化以及常見問題

    SQLite 是一個輕量級的數(shù)據(jù)庫,廣泛用于各種應用中,包括移動應用和嵌入式系統(tǒng),盡管它非常靈活和強大,但在處理大規(guī)模數(shù)據(jù)或高并發(fā)請求時,性能優(yōu)化變得非常重要,本篇文章將重點講解 SQLite 的調(diào)試工具和性能優(yōu)化技巧,以幫助您解決常見問題并進一步提升數(shù)據(jù)庫性能
    2025-03-03
  • python之sqlalchemy創(chuàng)建表的實例詳解

    python之sqlalchemy創(chuàng)建表的實例詳解

    這篇文章主要介紹了數(shù)據(jù)庫之sqlalchemy創(chuàng)建表的實例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • SQLite教程(八):命令行工具介紹

    SQLite教程(八):命令行工具介紹

    這篇文章主要介紹了SQLite教程(八):命令行工具介紹,本文羅列了所有內(nèi)置命令,并對命令作用做了說明,然后給出了常用示例,需要的朋友可以參考下
    2015-05-05

最新評論

灵石县| 荃湾区| 武川县| 云南省| 随州市| 随州市| 宜昌市| 涟水县| 喀喇沁旗| 句容市| 江津市| 唐河县| 平遥县| 当雄县| 宁德市| 石河子市| 高州市| 修水县| 城固县| 定陶县| 峨山| 武义县| 南涧| 肥东县| 竹溪县| 祁阳县| 巴南区| 张掖市| 丰原市| 同仁县| 毕节市| 舞钢市| 禹城市| 万州区| 开封县| 靖宇县| 桦川县| 鹿邑县| 新乐市| 千阳县| 桃源县|