1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      mysql可不可以創(chuàng)建聯(lián)合索引

      這篇文章主要介紹“MySQL可不可以創(chuàng)建聯(lián)合索引”,在日常操作中,相信很多人在mysql可不可以創(chuàng)建聯(lián)合索引問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”mysql可不可以創(chuàng)建聯(lián)合索引”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

      創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的嘉魚網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

      mysql可以創(chuàng)建聯(lián)合索引。MySQL允許用戶創(chuàng)建一個最多包含16列的聯(lián)合索引,創(chuàng)建方法有兩個:1、創(chuàng)建表時創(chuàng)建,語法“CREATE TABLE 表名 (列名1 類型 PRIMARY KEY,列名2 類型,列名3 類型,...INDEX 索引名 (列名2,列名3...));”;2、修改表時創(chuàng)建,語法“CREATE INDEX 索引名 ON 表名(列名2,列名3,列名4);”。

      本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。

      什么是聯(lián)合索引?聯(lián)合索引的本質(zhì):最左匹配

      兩個或更多個列上的索引被稱作聯(lián)合索引,聯(lián)合索引又叫復(fù)合索引。MySQL允許用戶創(chuàng)建一個最多包含16列的復(fù)合索引。

      對于復(fù)合索引:Mysql從左到右的使用索引中的字段,一個查詢可以只使用索引中的一部份,但只能是最左側(cè)部分。

      例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3種組合進行查找,但不支持 b,c進行查找 .當最左側(cè)字段是常量引用時,索引就十分有效。

      查詢優(yōu)化器將復(fù)合索引用于測試索引中所有列的查詢,或者測試第一列,前兩列等的查詢。

      如果在索引定義中以正確的順序指定列,則單個復(fù)合索引可以在同一個表上加速這些類型的查詢。

      創(chuàng)建表時創(chuàng)建聯(lián)合索引

      語法:

      CREATE TABLE 表名 (
          c1 data_type PRIMARY KEY,
          c2 data_type,
          c3 data_type,
          c4 data_type,
          INDEX 索引名 (c2,c3,c4)
      );

      在此語法中,聯(lián)合索引由三列c2,c3和c4組成。

      修改表時創(chuàng)建聯(lián)合索引

      可以使用以下CREATE INDEX語句將復(fù)合索引添加到現(xiàn)有表:

      CREATE INDEX 索引名 
      ON 表名(c2,c3,c4);

      請注意,如果您在(c1,c2,c3)上有復(fù)合索引,則您將在以下列組合之一上建立索引搜索功能:

      (c1)
      (c1,c2)
      (c1,c2,c3)

      例如:

      SELECT
          *
      FROM
          table_name
      WHERE
          c1 = v1;
       
       
      SELECT
          *
      FROM
          table_name
      WHERE
          c1 = v1 AND 
          c2 = v2;
       
       
      SELECT  
          *
      FROM
          table_name
      WHERE
          c1 = v1 AND 
          c2 = v2 AND 
          c3 = v3;

      如果列不形成索引的最左前綴,則查詢優(yōu)化器無法使用索引執(zhí)行查找。例如,以下查詢無法使用復(fù)合進行查找:

      SELECT
          *
      FROM
          table_name
      WHERE
          c1 = v1 AND 
          c3 = v3;

      MySQL聯(lián)合索引示例

      我們將使用示例數(shù)據(jù)庫中的employees表進行演示。

      mysql可不可以創(chuàng)建聯(lián)合索引

      以下語句在lastName和firstName列上創(chuàng)建聯(lián)合索引:

      CREATE INDEX name 
      ON employees(lastName, firstName);
      • 首先,name索引可用于指定lastName值的查詢中的查找,因為lastName列是索引的最左前綴。

      • 其次,name索引可用于指定lastName和firstName值組合的值的查詢。

      name索引用于在以下的查詢查找:

      1)查找姓氏為的員工 Patterson

      SELECT 
          firstName, 
          lastName, 
          email
      FROM
          employees
      WHERE
          lastName = 'Patterson';

      此查詢使用名稱索引,因為索引的最左邊前綴(即lastName列)用于查找。

      您可以通過EXPLAIN在查詢中添加子句來驗證這一點:

      EXPLAIN SELECT 
          firstName, 
          lastName, 
          email
      FROM
          employees
      WHERE
          lastName = 'Patterson';

      這是輸出:

      mysql可不可以創(chuàng)建聯(lián)合索引

      2)查找姓氏Patterson和名字的員工Steve:

      SELECT 
          firstName, 
          lastName, 
          email
      FROM
          employees
      WHERE
          lastName = 'Patterson' AND
          firstName = 'Steve';

      在此查詢中,兩個lastName和firstName列都用于查找,因此,它使用name索引。

      我們來核實一下:

      EXPLAIN SELECT 
          firstName, 
          lastName, 
          email
      FROM
          employees
      WHERE
          lastName = 'Patterson' AND
          firstName = 'Steve';

      輸出是:

      mysql可不可以創(chuàng)建聯(lián)合索引

      3)查找姓氏Patterson和名字是Steve或的員工Mary:

      SELECT 
          firstName, 
          lastName, 
          email
      FROM
          employees
      WHERE
          lastName = 'Patterson' AND
          (firstName = 'Steve' OR 
          firstName = 'Mary');

      此查詢類似于第二個查詢,其中兩個lastName和firstName列都用于查找。

      以下語句驗證索引用法:

      EXPLAIN SELECT 
          firstName, 
          lastName, 
          email
      FROM
          employees
      WHERE
          lastName = 'Patterson' AND
          (firstName = 'Steve' OR 
          firstName = 'Mary');

      輸出是:

      mysql可不可以創(chuàng)建聯(lián)合索引

      查詢優(yōu)化器不能在以下查詢中使用name索引進行查找,因為只使用了firstName不是索引最左前綴的列:

      SELECT 
          firstName, 
          lastName, 
          email
      FROM
          employees
      WHERE
          firstName = 'Leslie';

      類似地,查詢優(yōu)化器不能在以下查詢中使用名稱索引進行查找,因為firstName或者lastName列用于查找。

      SELECT 
          firstName, 
          lastName, 
          email
      FROM
          employees
      WHERE
          firstName = 'Anthony' OR
          lastName = 'Steve';

      到此,關(guān)于“mysql可不可以創(chuàng)建聯(lián)合索引”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
      當前標題:mysql可不可以創(chuàng)建聯(lián)合索引
      網(wǎng)頁網(wǎng)址:http://www.ef60e0e.cn/article/jdjdgj.html

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        上林县| 绍兴市| 肇东市| 嘉善县| 韶山市| 融水| 东港市| 藁城市| 綦江县| 乌拉特中旗| 六安市| 读书| 黄大仙区| 阿拉善右旗| 余庆县| 兰坪| 南平市| 石棉县| 晋宁县| 洪江市| 苍溪县| 浑源县| 诸城市| 灵石县| 岚皋县| 洞头县| 桂东县| 兴安盟| 凌海市| 慈溪市| 宿迁市| 闽清县| 平陆县| 玉环县| 许昌县| 丽江市| 安乡县| 望谟县| 丹巴县| 垦利县| 夏河县|