簡而言之,我知道Indexes最適用於Where子句中經常使用的列,以及任何類型的排序,比如「order由「,並與高基數cols。另一方面,如果過度使用,索引會減慢寫操作,並且會佔用磁盤空間。MYSQL InnoDB引擎索引(B-Tree)和一對一的關係
我有以下字段的用戶登記表:
ID INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
User_name VARCHAR(35) 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)
- 我很確信與我所選擇的所有字段的數據類型。
- 字段
Signup_Date
和Security_hint
很少會被查詢,所以我決定在一個單獨的表中隔離它們並使用外鍵使用1-1關係。這個策略是否有效?這種策略可能導致性能下降嗎? - 重要的一點:我是否還需要爲PASSWORD字段編制索引以便使登錄過程非常快速?
非常感謝你們提前。
編輯:我的登錄查詢是SELECT columns FROM users WHERE username = "x" AND password = "stuff"
。我使用的指數電子郵件只是爲了讓現有的電子郵件快速的檢查,如電子郵件和用戶名必須爲每個用戶
你應該只問一個問題,因爲它可以更容易地回答。通過一次回答兩個問題,你可以完全回答第一個答案,而其他人對第二個問題有最好的答案 - >哪一個答案應該被接受? – Philipp
@菲利普。如果這兩個問題的答案很好,如果只有一個問題需要回答,我希望它是重要的一個。謝謝 – Tim