<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                1,索引的類型 UNIQUE(唯一索引):不可以出現相同的值,可以有NULL值 INDEX(普通索引):允許出現相同的索引內容 PROMARY KEY(主鍵索引):不允許出現相同的值 fulltext index(全文索引):可以針對值中的某個單詞,但效率確實不敢恭維 組合索引:實質上是將多個字段建到一個索引里,列值的組合必須唯一 (1)一張表中只能有一個主鍵; 一個主鍵可以指向多列,叫做復合主鍵); 主鍵索引應該給ID,ID自增; 主鍵索引效率最高,不能為空,不能重復; (2)設置復合主鍵 方法一:在建表時就寫出 Create Table 表名 (字段名1 Int Not Null, 字段名2 nvarchar(13) Not Null Primary Key (字段名1, 字段名2), 字段名3………… 字段名N………… ) 方法二:在建表后更改 ALTER TABLE 表名 WITH NOCHECK ADD CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED ( [字段名1], [字段名2] ) 2,索引的創建 (1)創建表的時候同時創建索引 ~~~ CREATE TABLE `table` ( 07 `id` int(11) NOT NULL AUTO_INCREMENT , 08 `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , 09 `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL , 10 `time` int(10) NULL DEFAULT NULL , 11 PRIMARY KEY (`id`), 12 INDEX index_name (title(length)) ~~~ (2)修改表結構的方式添加索引 ALTER TABLE 表名 ADD 索引類型 (unique,primary key,fulltext,index)[索引名](字段名) ~~~ //普通索引 alter table table_name add index index_name (column_list) ; //唯一索引 alter table table_name add unique (column_list) ; //主鍵索引 alter table table_name add primary key (column_list) ; ~~~ CREATE INDEX index_name ON table_name(username(length)); ~~~ //create只能添加這兩種索引; CREATE INDEX index_name ON table_name (column_list) CREATE UNIQUE INDEX index_name ON table_name (column_list) ~~~ 3索引查詢 desc table_name; show keys from table_name; show index from table_name; show indexs from table_name; 4,刪除索引 刪除索引可以使用ALTER TABLE或DROP INDEX語句來實現。 ~~~ drop index index_name on table_name ; alter table table_name drop index index_name ; alter table table_name drop primary key ; ~~~ 5,注意事項 1.索引不會包含有NULL的列 只要列中包含有NULL值,都將不會被包含在索引中,復合索引中只要有一列含有NULL值,那么這一列對于此符合索引就是無效的。 2.使用短索引 對串列進行索引,如果可以就應該指定一個前綴長度。例如,如果有一個char(255)的列,如果在前10個或20個字符內,多數值是唯一的,那么就不要對整個列進行索引。短索引不僅可以提高查詢速度而且可以節省磁盤空間和I/O操作。 3.索引列排序 mysql查詢只使用一個索引,因此如果where子句中已經使用了索引的話,那么order by中的列是不會使用索引的。因此數據庫默認排序可以符合要求的情況下不要使用排序操作,盡量不要包含多個列的排序,如果需要最好給這些列建復合索引。 4.like語句操作 一般情況下不鼓勵使用like操作,如果非使用不可,注意正確的使用方式。like ‘%aaa%’和 ‘%aaa'不會使用索引,只有like ‘aaa%’可以使用索引。 5.不要在列上進行運算 6.不使用NOT IN 、<>、!=操作,但<,<=,=,>,>=,BETWEEN,IN是可以用到索引的 7.索引要建立在經常進行select操作的字段上。 這是因為,如果這些列很少用到,那么有無索引并不能明顯改變查詢速度。相反,由于增加了索引,反而降低了系統的維護速度和增大了空間需求。 8.索引要建立在值比較唯一的字段上。 9.對于那些定義為text、image和bit數據類型的列不應該增加索引。因為這些列的數據量要么相當大,要么取值很少。 10.在where和join中出現的列需要建立索引。 11.where的查詢條件里有不等號(where column != …),mysql將無法使用索引。 12.如果where字句的查詢條件里使用了函數(如:where DAY(column)=…),mysql將無法使用索引。 13.在join操作中(需要從多個數據表提取數據時),mysql只有在主鍵和外鍵的數據類型相同時才能使用索引,否則及時建立了索引也不會使用。 14.對于多列索引,只要查詢語句使用到了左邊的列,就會用到索引,否則不會用到索引。 15.對于'or' sql語句,必須所有的被查詢的列都建有索引,才會用到索引。 16.如果被查詢的列的類型是字符串,則需要在語句中對數據添加引號,比如: select * from emp where ename='1111';不能是select * from emp where ename=1111; 6,索引的使用情況查詢 ![](https://box.kancloud.cn/3c5ee4d01b353a492b814ba644ad5a71_639x168.png) 7,全文檢索 LIKE搜索: SELECT body FROM table_name WHERE body LIKE "%random_word1%" AND bodyLIKE "% random_word2%" AND body LIKE "% random_word3%"; FULLTEXT搜索: SELECT body FROM table_name WHERE MATCH(body) AGAINST("+random_word3 + random_word3+ random_word3" IN BOOLEAN MODE) 結果討論 LIKE搜索的耗時隨著記錄數的增加而線性增長,但對于10萬行記錄以下的表(這里共100000*50個單詞)搜索時間基本上能保持在1秒以內,所以like搜索的性能也不是特別差。由不同詞匯量生成的文本對LIKE搜索的性能影響不大,不同詞匯量對應的搜索時間基本上在一個很小的時間范圍內變化。 FULLTEXT搜索耗時也隨表中記錄數的增長而線性增加。對于10萬行記錄以下的表(這里共100000*50個單詞)搜索時間基本上能保持在0.01秒以內。由不同詞匯量生成的隨機文本對FULLTEXT搜索性能有相對來說比較顯著的影響。每行記錄中含同樣的單詞數,這樣,較大的詞匯量傾向于生成冗余度更低的文本,相應的搜索耗時傾向于更少。這可能與FULLTEXT索引建立單詞索引的機制有關,較大的詞匯量傾向于生成范圍廣但相對較淺的索引,因而能快速確定文本是否匹配。 與LIKE搜索相比,FULLTEXT全文搜索的性能要強很多,對于10萬行記錄的表,搜索時間都在0.02秒以下。因此可以將基于FULLTEXT索引的文本搜索部署于網站項目中的文本搜索功能中。但是,正如上述提到的,無論是LIKE搜索還是FULLTEXT搜索,其性能都會隨著記錄數的增長而下降,因此,若網站項目中的文本搜索數據庫記錄數龐大的一定規模后,可能需要考慮使用MySQL數據庫全文搜索以外的文本搜索解決方案了。 **(六)什么情況下不創建索引** 1.查詢中很少使用到的列 不應該創建索引,如果建立了索引然而還會降低mysql的性能和增大了空間需求. 2.很少數據的列也不應該建立索引,比如 一個性別字段 0或者1,在查詢中,結果集的數據占了表中數據行的比例比較大,mysql需要掃描的行數很多,增加索引,并不能提高效率 3.定義為text和image和bit數據類型的列不應該增加索引, 4.當表的修改(UPDATE,INSERT,DELETE)操作遠遠大于檢索(SELECT)操作時不應該創建索引,這兩個操作是互斥的關系
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看