インデックスの作成と使用

3951 ワード

            。    ,           ,            ,        。    ,         。
  MySQL      :
  (1)    
          ,       。          :
  ◆    
  CREATE INDEX indexName ON mytable(username(length));
      CHAR,VARCHAR  ,length          ;   BLOB TEXT  ,     length,  。
  ◆     
  ALTER mytable ADD INDEX [indexName] ON (username(length))
  ◆           
  CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );
         :
  DROP INDEX [indexName] ON mytable;
  (2)    
             ,     :         ,      。       ,          。          :
  ◆    
   CREATE UNIQUE INDEX indexName ON mytable(username(length))
  ◆     
  ALTER mytable ADD UNIQUE [indexName] ON (username(length))
  ◆          
  CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );
  (3)    
             ,      。                 :
  CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) );
         ALTER   。  :          。
  (4)    
                  ,        :
  CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, city VARCHAR(50) NOT NULL, age INT NOT NULL );
         MySQL   ,          。    name, city, age       :
  ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);
     ,usernname    16,    10。                  10,           ,           ,  INSERT     。
        usernname,city,age       ,    3     ,                   ,           。          , MySQL                        。
           ,                   :
  usernname,city,age usernname,city usernname
        city,age        ?    MySQL    “    ”   。                 。                      ,     SQL          :
  SELECT * FROM mytable WHREE username="admin" AND city="  " SELECT * FROM mytable WHREE username="admin"
            :
  SELECT * FROM mytable WHREE age=20 AND city="  " SELECT * FROM mytable WHREE city="  "
  (5)       
                ,                 ?    , WHERE JOIN           ,       ,  MySQL  <,<=,=,>,>=,BETWEEN,IN,       LIKE      
。  :
  SELECT t.Name FROM mytable t LEFT JOIN mytable m ON t.Name=m.username WHERE m.age=20 AND m.city='  '
        city age    ,  mytable   userame     JOIN   ,           。
             LIKE      。       % _      ,MySQL      。         :
  SELECT * FROM mytable WHERE username like'admin%'
          :
  SELECT * FROM mytable WHEREt Name like'%admin'
    ,   LIKE         。
  (6)       
              ,              。           :
  ◆             ,            ,      INSERT、UPDATE DELETE。      ,MySQL       ,          。
  ◆                。            ,                   ,          。
               ,     MySQL       ,                ,       。
  (7)         
       ,            :
  ◆       NULL   

         NULL            ,             NULL ,                 。                     NULL。
  ◆     
         ,              。  ,     CHAR(255)  ,    10  20    ,       ,             。                        I/O  。
  ◆     
  MySQL         ,     where            ,  order by           。                           ;            ,                。
  ◆like    
            like  ,       ,          。like “%aaa%”        like “aaa%”      。         

  select * from users where YEAR(adddate)<2007;
            ,               ,        
   select * from users where adddate<‘2007-01-01’;
  ◆   NOT IN <>