導航:首頁 > 數據處理 > 哪些數據不能創建索引

哪些數據不能創建索引

發布時間:2023-01-16 03:14:50

1. 在中國學術期刊網路出版總庫中,不可以進行什麼檢索

不可以進行詞頻控制。《中國學術期刊網路出版總庫》檢索結果頁面將通過檢索平台檢索得到的檢索結果以列表形式展示出來,並提供對檢索結果進行分組分析、排序分析的方法,來准確查找文獻。

檢索結果分組類型包括:學科類別、期刊名稱、研究資助基金、研究層次、文獻作者、作者單位、中文關鍵詞。

學科類別分組是將檢索結果按照168專輯分類下級的4000多個學科類目進行分組。按學科類別分組可以查看檢索結果所屬的更細的學科專業,進一步進行篩選,找到所關注文獻。

索引的注意事項

1、索引可以提高數據的訪問速度,但同時也增加了插入、更新和刪除操作的處理時間。所以是否要為表增加索引、索引建立在那些欄位上,是創建索引前必須要考慮的問題。解決此問題就是分析應用程序的業務處理、數據使用,為經常被用作查詢條件、或者被要求排序的欄位建立索引。

2、索引是建立在資料庫表中的某些列的上面。因此在創建索引的時候,應該仔細考慮在哪些列上可以創建索引,在哪些列上不能創建索引。

3、索引應該建在選擇性高的欄位上。

4、索引應該建在小欄位上,對於大的文本欄位甚至超長欄位,不要建索引。

2. 在一張自由表中,不能建立哪種索引( )

在Visual FoxPro中,自由表不能建立的索引是主索引。

根據索引功能的不同,可以將索引分為主索引、候選索引、唯一索引和普通索引四種。其中,主索引是在指定欄位或表達式中不允許出現重復值的索引,在資料庫表中才能建立主索引,即在一個自由表中不能建立主索引。



(2)哪些數據不能創建索引擴展閱讀

在資料庫系統中建立索引主要有以下作用:

(1)快速取數據;

(2)保證數據記錄的唯一性;

(3)實現表與表之間的參照完整性;

(4)在使用ORDER by、group by子句進行數據檢索時,利用索引可以減少排序和分組的時間。

3. 在Access的下列數據類型中,不能建立索引的數據類型是________。

因為你選擇備注類型就不會出現索引的選項

4. 在Access的下列數據類型中,不能建立索引的數據類型是______

備注型。

access的數據類型是關系資料庫。備注型用來保存長度較長的文本及數字,允許欄位能夠存儲長達65535個字元的內容。但Access不能對備注欄位進行排序或索引,卻在備注欄位中雖然可以搜索文本,但卻不如在有索引的文本欄位中搜索得快。

在Access資料庫中,一種用於建立同步復制唯一標識符的 16位元組欄位。GUID用於標識副本,副本集,表,記錄和其他對象。在 Access資料庫中GUID是同步復制 ID。)

(4)哪些數據不能創建索引擴展閱讀:

注意事項:

1、Access資料庫的通配符為*號,一般資料庫為%號。

2、Access資料庫的日期查詢需要在日期前後需要加#號,一般資料庫用單引號括起來即可。

3、Access資料庫日期的轉換使用CDate函數,其他資料庫有相應函數,一般不需要轉換成日期類型時可以使用單引號括起來即可。

4、連接字元串,可以使用相對路徑,也可以使用絕對路徑:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dataMiddleResult.mdb。

5. MySql索引之哪些情況適合創建索引

說明:不要以為唯一索引影響了 insert 速度,這個速度損耗可以忽略,但提高查找速度是明顯的。

某個欄位在SELECT語句的 WHERE 條件中經常被使用到,那麼就需要給這個欄位創建索引了。尤其是在

數據量大的情況下,創建普通索引就可以大幅提升數據查詢的效率。

比如student_info數據表(含100萬條數據),假設我們想要查詢 student_id=123110 的用戶信息。

索引就是讓數據按照某種順序進行存儲或檢索,因此當我們使用 GROUP BY 對數據進行分組查詢,或者

使用 ORDER BY 對數據進行排序的時候,就需要 對分組或者排序的欄位進行索引 。如果待排序的列有多

個,那麼可以在這些列上建立 組合索引 。

對數據按照某個條件進行查詢後再進行 UPDATE 或 DELETE 的操作,如果對 WHERE 欄位創建了索引,就

能大幅提升效率。原理是因為我們需要先根據 WHERE 條件列檢索出來這條記錄,然後再對它進行更新或

刪除。如果進行更新的時候,更新的欄位是非索引欄位,提升的效率會更明顯,這是因為非索引欄位更

新不需要對索引進行維護。

有時候我們需要對某個欄位進行去重,使用 DISTINCT,那麼對這個欄位創建索引,也會提升查詢效率。

比如,我們想要查詢課程表中不同的 student_id 都有哪些,如果我們沒有對 student_id 創建索引,執行

SQL 語句:

運行結果(600637 條記錄,運行時間 0.683s ):

如果我們對 student_id 創建索引,再執行 SQL 語句:

運行結果(600637 條記錄,運行時間 0.010s ):

你能看到 SQL 查詢效率有了提升,同時顯示出來的 student_id 還是按照 遞增的順序 進行展示的。這是因

為索引會對數據按照某種順序進行排序,所以在去重的時候也會快很多。

首先, 連接表的數量盡量不要超過 3 張 ,因為每增加一張表就相當於增加了一次嵌套的循環,數量級增

長會非常快,嚴重影響查詢的效率。

其次, 對 WHERE 條件創建索引 ,因為 WHERE 才是對數據條件的過濾。如果在數據量非常大的情況下,

沒有 WHERE 條件過濾是非常可怕的。

最後, 對用於連接的欄位創建索引 ,並且該欄位在多張表中的 類型必須一致 。比如 course_id 在

student_info 表和 course 表中都為 int(11) 類型,而不能一個為 int 另一個為 varchar 類型。

舉個例子,如果我們只對 student_id 創建索引,執行 SQL 語句:

運行結果(1 條數據,運行時間 0.189s ):

這里我們對 name 創建索引,再執行上面的 SQL 語句,運行時間為 0.002s 。

創建一張商戶表,因為地址欄位比較長,在地址欄位上建立前綴索引

問題是,截取多少呢?截取得多了,達不到節省索引存儲空間的目的;截取得少了,重復內容太多,字

段的散列度(選擇性)會降低。 怎麼計算不同的長度的選擇性呢?

先看一下欄位在全部數據中的選擇度:

通過不同長度去計算,與全表的選擇性對比:

公式:

例如:

引申另一個問題:索引列前綴對排序的影響

拓展:Alibaba《Java開發手冊》

【 強制 】在 varchar 欄位上建立索引時,必須指定索引長度,沒必要對全欄位建立索引,根據實際文本

區分度決定索引長度。

說明:索引的長度與區分度是一對矛盾體,一般對字元串類型數據,長度為 20 的索引,區分度會 高達

90% 以上 ,可以使用 count(distinct left(列名, 索引長度))/count(*)的區分度來確定。

這樣也可以較少的建立一些索引。同時,由於"最左前綴原則",可以增加聯合索引的使用率。

結論:在數據表中的數據行數比較少的情況下,比如不到 1000 行,是不需要創建索引的。

舉例1:要在 100 萬行數據中查找其中的 50 萬行(比如性別為男的數據),一旦創建了索引,你需要先

訪問 50 萬次索引,然後再訪問 50 萬次數據表,這樣加起來的開銷比不使用索引可能還要大。

舉例2:假設有一個學生表,學生總數為 100 萬人,男性只有 10 個人,也就是占總人口的 10 萬分之 1。

學生表 student_gender 結構如下。其中數據表中的 student_gender 欄位取值為 0 或 1,0 代表女性,1 代

表男性。

如果我們要篩選出這個學生表中的男性,可以使用:

運行結果(10 條數據,運行時間 0.696s ):

結論:當數據重復度大,比如 高於 10% 的時候,也不需要對這個欄位使用索引。

例如身份證、UUID(在索引比較時需要轉為ASCII,並且插入時可能造成頁分裂)、MD5、HASH、無序長字

符串等。

① 冗餘索引

舉例:建表語句如下

我們知道,通過 idx_name_birthday_phone_number 索引就可以對 name 列進行快速搜索,再創建一

個專門針對 name 列的索引就算是一個 冗餘索引 ,維護這個索引只會增加維護的成本,並不會對搜索有

什麼好處。

② 重復索引

另一種情況,我們可能會對某個列 重復建立索引 ,比方說這樣:

我們看到,col1 既是主鍵、又給它定義為一個唯一索引,還給它定義了一個普通索引,可是主鍵本身就

會生成聚簇索引,所以定義的唯一索引和普通索引是重復的,這種情況要避免。

歡迎共同進步:
QQ群:1007576722
https://huchao.blog.csdn.net/article/details/124220802?spm=1001.2014.3001.5502

6. 為什麼資料庫中要創建索引

資料庫中索引的優缺點
為什麼要創建索引呢?這是因為,創建索引可以大大提高系統的性能。第一,通過創建唯一性索引,可以保證資料庫表中每一行數據的唯一性。第二,可以大大加快數據的檢索速度,這也是創建索引的最主要的原因。第三,可以加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義。第四,在使用分組和排序子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間。第五,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的性能。

也許會有人要問:增加索引有如此多的優點,為什麼不對表中的每一個列創建一個索引呢?這種想法固然有其合理性,然而也有其片面性。雖然,索引有許多優點,但是,為表中的每一個列都增加索引,是非常不明智的。這是因為,增加索引也有許多不利的一個方面。第一,創建索引和維護索引要耗費時間,這種時間隨著數據量的增加而增加。第二,索引需要佔物理空間,除了數據表占數據空間之外,每一個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。第三,當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了數據的維護速度。

索引是建立在資料庫表中的某些列的上面。因此,在創建索引的時候,應該仔細考慮在哪些列上可以創建索引,在哪些列上不能創建索引。一般來說,應該在這些列上創建索引,例如:在經常需要搜索的列上,可以加快搜索的速度;在作為主鍵的列上,強制該列的唯一性和組織表中數據的排列結構;在經常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度;在經常需要根據范圍進行搜索的列上創建索引,因為索引已經排序,其指定的范圍是連續的;在經常需要排序的列上創建索引,因為索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢時間;在經常使用在where子句中的列上面創建索引,加快條件的判斷速度。

同樣,對於有些列不應該創建索引。一般來說,不應該創建索引的的這些列具有下列特點:第一,對於那些在查詢中很少使用或者參考的列不應該創建索引。這是因為,既然這些列很少使用到,因此有索引或者無索引,並不能提高查詢速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求。第二,對於那些只有很少數據值的列也不應該增加索引。這是因為,由於這些列的取值很少,例如人事表的性別列,在查詢的結果中,結果集的數據行佔了表中數據行的很大比例,即需要在表中搜索的數據行的比例很大。增加索引,並不能明顯加快檢索速度。第三,對於那些定義為text, image和bit數據類型的列不應該增加索引。這是因為,這些列的數據量要麼相當大,要麼取值很少。第四,當修改性能遠遠大於檢索性能時,不應該創建索引。這是因為,修改性能和檢索性能是互相矛盾的。當增加索引時,會提高檢索性能,但是會降低修改性能。當減少索引時,會提高修改性能,降低檢索性能。因此,當修改性能遠遠大於檢索性能時,不應該創建索引。

閱讀全文

與哪些數據不能創建索引相關的資料

熱點內容
個人信息泄露被判刑的有哪些 瀏覽:179
義烏狗市場狗多少一隻 瀏覽:650
如何解除移動數據限流的方法 瀏覽:174
郴州市活禽交易市場什麼時候休市 瀏覽:456
四川空間信息產業發展怎麼樣 瀏覽:284
宏基筆記本怎麼樣關閉程序 瀏覽:522
邯鄲有哪些鐵板市場 瀏覽:850
問道如何查詢賬號信息 瀏覽:323
工商銀行交易4204是什麼意思 瀏覽:454
食品產品標准號怎麼解讀 瀏覽:536
我愛我家鏈家為什麼退出北京市場 瀏覽:648
男生如何縮小臉部毛孔產品 瀏覽:199
數據線方頭卡扣怎麼卸 瀏覽:668
宮頸代理怎麼做 瀏覽:815
想做食品代理商怎麼樣 瀏覽:366
農資加盟店需多少錢代理商 瀏覽:492
信息驗證碼如何設置 瀏覽:296
設計時必要准備的數據有哪些 瀏覽:886
採取的程序是有什麼優勢 瀏覽:115
偽中幣交易網站有哪些 瀏覽:870