簡體   English   中英

MySQL-索引問題

[英]MySQL - Indexing questions

我是第一次使用MySQL創建更大的數據庫。 由於它將變得更大,因此我需要更好的查詢性能。 所以我研究了索引。 因為這是我的經驗,所以我總是創建一個名為id的列,該列會自動遞增並用作主索引。

經過一些搜索和閱讀,我認為我已經了解了一些有關索引編制的知識,但是我想確定一下。

當您將選擇查詢與WHERE子句一起使用時,索引很有用,因為它不是在搜索整個表,而是在較小的部分中進行搜索。 您應該索引WHERE和JOIN子句中使用的內容。

僅在要索引的列上的phpMyAdmin中添加索引就足夠了,還是在執行選擇查詢時必須做一些事情?

您無需對SELECT語句進行任何更改。 MySQL會在可能時自動使用索引進行查找。

所以是的,通過phpMyAdmin添加索引就足夠了。

若要查看實際效果,創建索引后,請嘗試運行以EXPLAIN為前綴的SELECT查詢。 MySQL會告訴您正在使用哪些索引。

只需添加索引。 數據庫引擎將盡可能使用它。 要查看數據庫引擎是否使用它,您可以在查詢之前添加一個explain然后輸出結果。 例:

explain select * from your_table

確實可以在where子句中使用索引,但是通常您不知道要搜索哪些索引,而是搜索更有意義的數據,例如名稱,電子郵件地址,日期等。

聯接表時,使用索引的強大功能在於提高搜索性能和數據庫大小。 想象一下,如果您有一個包含員工的數據庫,並且想跟蹤他們所屬的辦公室。 每個員工只有一張桌子,將有一個包含辦公室名稱的字符字符串,即“阿爾伯克基總部”。 字符字符串占用大量空間,搜索速度很慢。

取而代之的是,設計有兩個表和索引的employee表僅需要為每個員工存儲一個int(另一個表的索引)。 第二個表跟蹤所有辦公室。 當數據記錄數量增加時,整個數據庫將變得更小。 這種方法也更容易維護,並且在各個方面都更好。

無論哪種方式-索引都不會出錯,也可以在要創建的每個表中添加一個索引(我確信有人可能會不同意此語句,但是通常我會說你應該去做它) )。

暫無
暫無

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

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