我正在創建一個網站,允許用戶向公衆分享特定頁面。它類似於jsbin.com讓你爲你正在創建的腳本創建一個公共URL。我與現在的工作基本MySQL表爲:我應該如何索引這個MySQL數據庫?
CREATE TABLE IF NOT EXISTS `lists` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`hash` varchar(6) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `hash` (`hash`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
的key
領域是保存隨機字符串,用戶將鍵入的URL的最後一列。因此,例如,如果用戶在那裏公佈了散列值爲a1b2c3
的頁面,則URL將爲http://mysite.com/a1b2c3
好的,抱歉,描述花了這麼長時間。我的問題是,我應該索引哈希列嗎?這會使查詢更快,因爲我主要是通過散列值查看行嗎?
此外,我有另一個表與這個有一個外鍵關係。將它與哈希列關聯起來是否在性能上有意義?
感謝您的幫助。
我忘了提及另一個表有一個外鍵多對一的關係到這張表。我遇到的另一個問題是,如果哈希列是主鍵,是否可以使用外鍵引用此哈希列? – 2010-03-02 22:25:05
可能有關於使用'varchar'字段作爲關鍵字的性能考慮事項,但不應該被禁止。什麼是散列來源,期望多長時間,以及您在表格中預計有多少行? – 2010-03-02 23:24:42
在另一個表中的外鍵引用一個表中的主鍵(即您唯一的哈希列)時確實有意義。 – Summer 2010-03-03 03:31:46