2011-08-06 30 views
1

我對mysql的phpMyadmin環境很陌生,我想有一些區域 1.我需要一個文本字段,最多應該有500個字符。 這是否必須是「TEXT」字段?是否需要應用程序負責這個長度?Mysql phpMyAdmin幾個問題:

  1. 索引。我知道,當我將一個字段表示爲「索引」時,這意味着該字段將有一個指針表,並且每個WHERE包含命令都會根據該字段進行優化(log n複雜度)。但是如果我將這個字段標記爲索引後發生了什麼呢?說它有一些行後呢?我可以發出像「遍歷所有表格並索引該字段」的命令嗎?

  2. 當我標記字段建立索引,我有時讓他們在phpMyAdmin爲具有鍵名

  3. 由索引字段訪問表時,我寫PHP的,它需要一個額外的努力在我身邊使用那個寫在「結構」視圖中的鍵名稱來使用表格作爲索引,或者是否在幕後使用該鍵名,我不應該關心它?

  4. 我有時會得到引用兩個或多個字段的鍵名。字段顯示一個在另一個之上。我不知道它是如何發生的,但我需要它們僅索引一個字段。到底是怎麼回事 ?

  5. 我在我的數據庫中使用UTF-8值。當我創建它時,我想我將它標記爲utf8_unicode_ci,並且有些字段標記爲utf8_general_ci,這有什麼關係嗎?我可以返回並將整個數據庫定義更改爲utf8_general_ci嗎?

我認爲這是相當多的, 我提前感謝你! Ted

回答

2

首先,請注意,這本身並不是關於phpmyadmin,而是關於mysql /數據庫的更多內容。

1)

索引意味着你犯了一個列表(大部分是存在的值時樹)。這樣你可以很容易地找到那個/那些值的行。在插入值之前,可以輕鬆地製作此樹。請注意,這意味着所有「添加到索引」命令都放在了一起,所以不是您想在具有大量條目的「實時」表上執行的操作。但是,您可以隨時添加索引。只需添加索引,即可創建索引,無論是空表還是「已用」索引。

2)

我不知道你是什麼意思。索引有一個名字,它並不重要。 (主鍵)是索引,但並非所有索引都是鍵。

3)

你並不需要「力」 MySQL使用的關鍵,優化器知道如何最好地以及何時使用密鑰。如果你的密鑰正確使用它們,如果它們不正確,他們不能用,所以你不能強迫它:換句話說:不要去想它:)

4)

如果您同時將2個字段標記爲鍵,PHPMYADMIN會生成一個組合鍵。這很煩人,可能是錯誤的。如果你一次搜索2件東西,你可以使用複合鍵,但如果你搜索一件東西,你不能。只需將它們標記爲一次一個密鑰,或手動使用正確的SQL命令。

5)

你可以改變任何你喜歡的,但我不知道會與你的價值觀發生什麼。更好地檢查手動:)

0

如果您需要一個字段包含500個字符,您可以使用VARCHAR。只需將其長度設置爲500.

  1. 您不按字段進行索引,而是對整列進行索引。因此,表中是否有數據並不重要。所有行將被索引。

  2. 不是一個問題

  3. 該指標將被用於時,他們可以。您只需要擔心使用在查詢的WHERE部分中編入索引的相同列。 Read about it here

  4. 您可以在索引中添加任意數量的列。例如,如果向索引添加列「foo」,「bar」和「ming」,那麼您的數據庫將針對使用WHERE子句中的那些列的搜索進行速度優化。再次,上面的鏈接解釋了這一切。

  5. 我不知道。我100%確定,如果您在數據庫中只使用UTF-8值,則無關緊要。你可以改變,雖然稍後,在這個問題#1解釋:How to convert an entire MySQL database characterset and collation to UTF-8?

我建議你放棄的phpMyAdmin的HeidiSQL雖然。 HeidiSQL是一個管理你所有MySQL服務器的windows客戶端。它有很多很酷的功能,比如直接從一個MySQL服務器複製表或數據庫到另一個。試一試(免費)