簡體   English   中英

MYSQL InnoDB引擎索引(B樹)

[英]MYSQL InnoDB engine indexing (B-Tree)

我有以下user registration table

      ID INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
      User_name VARCHAR(35) NOT NULL,
      Full_name VARCHAR(55) NOT NULL,
      User_vars VARCHAR(255) NOT NULL,
      BirthDay DATE NOT NULL,
      password CHAR(70) NOT NULL,  
      Security_hint VARCHAR(27) NOT NULL,
      Email VARCHAR(225) NOT NULL,
      userType ENUM ('a','b','c','d') NOT NULL DEFAULT 'a',
      Signup_Date TIMESTAMP NOT NULL  DEFAULT CURRENT_TIMESTAMP,
      activation   TINYINT(1) UNSIGNED NOT NULL,
      Ip BINARY(16) NOT NULL,
      PRIMARY KEY (ID),
      UNIQUE KEY User_name (User_name,Email)

我真的對是否應該為字段BirthDay, Signup_Date, Full_name, User_vars and userType編制索引感到困惑,因為此信息將必須顯示在用戶訪問的任何頁面中。

User_vars是用戶可能每天(甚至每周)更新的字段; 我認為索引這個字段可能不是一個好主意,因為索引會減慢寫操作的速度。 如果有錯請糾正我。 我在其他表格中還有許多其他字段(用戶每天更新的字段,並且他們的更新都顯示在他們訪問的任何頁面上的字段),並且不知道是否也需要對其進行索引

注意:我知道可以查詢一次然后將其緩存,但是,恐怕對表的第一個查詢返回結果集的速度會很慢。

非常感謝

為了提高性能,請將VARCHAR更改為TINYTEXT,這允許行具有固定的大小,從而加快了表掃描的速度。 根據該表,可能會查詢User_name和Email。 將其更改為CHAR並為其編制索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM