溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql索引建立規(guī)則有哪些

發(fā)布時間:2021-08-04 16:41:53 來源:億速云 閱讀:140 作者:Leah 欄目:數(shù)據(jù)庫

mysql索引建立規(guī)則有哪些,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

  mysql建立索引常用的規(guī)則如下:

  1、表的主鍵、外鍵必須有索引;

  2、數(shù)據(jù)量超過300的表應該有索引;

  3、經(jīng)常與其他表進行連接的表,在連接字段上應該建立索引;

  4、經(jīng)常出現(xiàn)在Where子句中的字段,特別是大表的字段,應該建立索引;

  5、索引應該建在選擇性高的字段上;

  6、索引應該建在小字段上,對于大的文本字段甚至超長字段,不要建索引;

  7、復合索引的建立需要進行仔細分析;盡量考慮用單字段索引代替: A、正確選擇復合索引中的主列字段,一般是選擇性較好的字段; B、復合索引的幾個字段是否經(jīng)常同時以AND方式出現(xiàn)在Where子句中?單字段查詢是否極少甚至沒有?如果是,則可以建立復合索引;否則考慮單字段索引; C、如果復合索引中包含的字段經(jīng)常單獨出現(xiàn)在Where子句中,則分解為多個單字段索引; D、如果復合索引所包含的字段超過3個,那么仔細考慮其必要性,考慮減少復合的字段; E、如果既有單字段索引,又有這幾個字段上的復合索引,一般可以刪除復合索引;

  8、頻繁進行數(shù)據(jù)操作的表,不要建立太多的索引;

  9、刪除無用的索引,避免對執(zhí)行計劃造成負面影響; 以上是一些普遍的建立索引時的判斷依據(jù)。一言以蔽之,索引的建立必須慎重,對每個索引的必要性都應該經(jīng)過仔細分析,要有建立的依據(jù)。因為太多的索引與不充分、不正確的索引對性能都毫無益處:在表上建立的每個索引都會增加存儲開銷,索引對于插入、刪除、更新操作也會增加處理上的開銷。另外,過多的復合索引,在有單字段索引的情況下,一般都是沒有存在價值的;相反,還會降低數(shù)據(jù)增加刪除時的性能,特別是對頻繁更新的表來說,負面影響更大

  你現(xiàn)在種方法效率其實是差不多的,都非常低,極端低,最低。

  一、如果不改進效率,只簡化程序,我有建議你對新聞類別進行二進制編碼,仍然使用features一個字段來表示,字段為整數(shù)類型,使用最低開始的四個二進制位是否為1來表示是否為圖片新聞、頭條新聞、首頁新聞、重要新聞,例如7(二進制的0111)表示具有頭條、首頁、重要三個屬性。查詢的時候使用位運算&來實現(xiàn),圖片新聞、頭條新聞、首頁新聞、重要新聞的權重分別是8、4、2、1,這時候假若調用三條是圖片新聞的新聞時,直接可以用sql語句:

  select * from news where features & 8=8 order by news_id desc limit 0,3;

  假若調用三條是圖片新聞、并且重要新聞時,直接可以用sql語句:

  select * from news where features & 9=9 order by news_id desc limit 0,3;

  看見沒有,可以查詢具有一種屬性的,也可以查詢具有多種屬性的數(shù)據(jù),程序很方便。

  二、高效的辦法是另外建立表來記錄各類新聞,冗余保存數(shù)據(jù)到多個表中,需要查什么新聞就在哪一個表中查詢。但是程序會非常復雜,保存的時候要根據(jù)類別存儲到不同的表中,修改的最麻煩,如果修改類別還需要把數(shù)據(jù)從一個表移動到另外的表。當然,作為新聞這樣的應用,都是保存一次、修改一二次、查看成千上萬次,為了整體效率肯定是關鍵優(yōu)化查詢代碼。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI