MySQL常見問題及解答

2021-06-18 02:48:13 字數 1759 閱讀 3247

1.mysql中索引、主鍵和唯一性的區別是什麼?

索引建立在乙個或者幾個欄位上。建立了索引後,表中的資料就按照索引的一定規則排列。這樣可以提高查詢速度。

主鍵是表中資料的唯一標識。不同的記錄的主鍵值不同。例如,身份證好比主鍵,每個身份證號都可以唯一的確定乙個人。在建立主鍵時,系統會自動建立乙個唯一性索引。

唯一性也是建立在表中乙個或者幾個欄位上。其目的是為了對於不同的記錄,具有唯一性的字段的值是不同的。

2.表中建立了索引以後,匯入大量資料為什麼會很慢?

對已經建立了索引的表中插入資料時,插入一條資料就要對該記錄按索引排序。因此,匯入大量資料的時候速度會很慢。解決這種情況的辦法是,在沒有任何索引的情況插入資料,然後建立索引。

3.乙個儲存過程中可以呼叫其他的儲存過程嗎?

儲存過程是使用者定義的sql語句的集合。使用者通過call語句呼叫已經定義好的儲存過程來執行其中的sql語句。同時,儲存過程中也可以通過call語句來呼叫其他的儲存過程。

4.儲存過程和儲存函式的區別是什麼?

儲存過程的引數有3類,分別是in、out和inout。通過out、inout將儲存過程的執行結果輸出。而且儲存過程中可以有多個out、inout型別的變數,可以輸出多個值。

儲存函式中的引數都是輸入引數。函式中的運算結果通過return語句來返回。return語句只能返回乙個結果。

5.儲存函式和mysql內部函式有什麼區別?

儲存函式是使用者自己定義的函式。並且通過呼叫來執行函式中的sql語句。函式執行完成後,通過return語句來返回執行結果。從原理上講,儲存函式和mysql內部函式是一樣的。只是內部函式比較常用,因此,資料庫的設計者將這些函式整合到了資料庫中。而且,儲存函式和mysql內部函式的呼叫方式是一樣的。

6.如何使用查詢快取區?

查詢快取區可以提高查詢的速度。這種方式只適用於修改操作少且經常執行相同的查詢操作的情況。預設情況下,查詢快取區是禁止的,因為query_cache_size的預設值為0。query_cache_size可以設定有效的使用空間。query_cache_type可以設定查詢緩衝區的開啟狀態,其取值為0、1或2。在my.cnf或者my.ini中加入下面的語句:

#my.cnf(linux)或者my.ini(windows

[mysqld]

query_cache_size=20m

query_cache_type=1

query_cache_type取值為1時表示開啟查詢快取區。在查詢語句中加上sql_no_cache關鍵字,該查詢語句將不使用查詢查詢快取區。可以使用flush query cache語句來清理查詢快取區中的碎片。

7.為什麼查詢語句中的索引沒有發揮作用?

在很多情況下,雖然查詢語句中使用了索引,但是索引並沒有發揮作用。例如,在where條件的like關鍵字匹配的字串以「%」開頭,這種情況下索引不會起作用。where條件中使用or關鍵字來連線多個查詢條件,如果有乙個條件沒有使用索引,那麼其他的索引也不會起作用。如果使用多列索引時,多列索引的第乙個字段沒有使用,那麼這個多列索引也不起作用。根據這些情況,必須對這些語句進行相應的優化。

MySQL常見問題解答

問題一 mysql每八小時自動斷開連線。解決方法 linux unix下開啟 etc my.cnf,在屬性組mysqld下面新增引數如下 mysqld interactive timeout 28800000 wait timeout 28800000 windows下在my.ini文中增加 int...

TFS2012常見問題及解答

1.刪除workitem工作項 包括bug,使用者場景,任務等 需要利用到witadmin工具,目錄在cd programfiles microsoft visual studio 11.0 common7 ide 64位下變為programfiles x86 命令 witadmin destroy...

常見問題解答

怎麼判斷乙個exe可執行檔案是用什麼語言開發的?答 請試試peid偵殼工具吧!批處理命令中注釋符號是什麼?答 1 注釋內容 第乙個冒號後也可以跟任何乙個非字母數字的字元 2 rem 注釋內容 不能出現重定向符號和管道符號 3 echo 注釋內容 不能出現重定向符號和管道符號 nul 4 if not...