正確理解Mysql中的列索引和多列索引_MySQL教程
推薦:如何通過配置自動實現(xiàn)ValueList中hql語句的整型參數(shù)轉(zhuǎn)換通過valuelist的queryMap傳遞過來的參數(shù)默認都為string類型,在valuelist配置文件的hql中,如果直接將該值賦給整型的字段會報錯。一般我們會在hql中利用轉(zhuǎn)型函數(shù)來進行處理,如下: 復(fù)制代碼 代碼如下: entry key=areasInfoAdapter bean parent=abstractHibernate30Ada
Mysql數(shù)據(jù)庫提供兩種類型的索引,如果沒正確設(shè)置,索引的利用效率會大打折扣卻完全不知問題出在這。
復(fù)制代碼 代碼如下:CREATE TABLE test (
id INT NOT NULL,
last_name CHAR(30) NOT NULL,
first_name CHAR(30) NOT NULL,
PRIMARY KEY (id),
INDEX name (last_name,first_name)
);
以上創(chuàng)建的其實是一個多列索引,創(chuàng)建列索引的代碼如下:
CREATE TABLE test (
id INT NOT NULL,
last_name CHAR(30) NOT NULL,
first_name CHAR(30) NOT NULL,
PRIMARY KEY (id),
INDEX name (last_name),
INDEX_2 name (first_name)
);
一個多列索引可以認為是包含通過合并(concatenate)索引列值創(chuàng)建的值的一個排序數(shù)組。 當查詢語句的條件中包含last_name 和 first_name時,例如:
SELECT * FROM test WHERE last_name='Kun' AND first_name='Li';
sql 會先過濾出last_name符合條件的記錄,在其基礎(chǔ)上在過濾first_name符合條件的記錄。那如果我們分別在last_name和 first_name上創(chuàng)建兩個列索引,mysql的處理方式就不一樣了,它會選擇一個最嚴格的索引來進行檢索,可以理解為檢索能力最強的那個索引來檢 索,另外一個利用不上了,這樣效果就不如多列索引了。
但是多列索引的利用也是需要條件的,以下形式的查詢語句能夠利用上多列索引:
SELECT * FROM test WHERE last_name='Widenius';
SELECT * FROM test WHERE last_name='Widenius' AND first_name='Michael';
SELECT * FROM test WHERE last_name='Widenius' AND (first_name='Michael' OR first_name='Monty');
SELECT * FROM test WHERE last_name='Widenius' AND first_name >='M' AND first_name < 'N';
以下形式的查詢語句利用不上多列索引:
SELECT * FROM test WHERE first_name='Michael';
SELECT * FROM test WHERE last_name='Widenius' OR first_name='Michael';
多列建索引比對每個列分別建索引更有優(yōu)勢,因為索引建立得越多就越占磁盤空間,在更新數(shù)據(jù)的時候速度會更慢。
另外建立多列索引時,順序也是需要注意的,應(yīng)該將嚴格的索引放在前面,這樣篩選的力度會更大,效率更高。
分享:Mysql建表與索引使用規(guī)范詳解本篇文章是對Mysql建表和索引使用規(guī)范進行了詳細的分析介紹,需要的朋友參考下 一、 MySQL建表,字段需設(shè)置為非空,需設(shè)置字段默認值。 二、 MySQL建表,字段需NULL時,需設(shè)置字段默認值,默認值不為NULL。 三、 MySQL建表,如果字段等價于外鍵,應(yīng)在該字段加索引。 四
- MSSQL清空日志刪除日志文件
- 關(guān)于數(shù)據(jù)庫中保留小數(shù)位的問題
- 解析mysql與Oracle update的區(qū)別
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫以及函數(shù)、存儲過程的介紹
- MySQL——修改root密碼的4種方法(以windows為例)
- 解決MYSQL出現(xiàn)Can''t create/write to file ''#sql_5c0_0.MYD''的問題
- 深入理解SQL的四種連接-左外連接、右外連接、內(nèi)連接、全連接
- 解析:內(nèi)聯(lián),左外聯(lián),右外聯(lián),全連接,交叉連接的區(qū)別
- mysql出現(xiàn)“Incorrect key file for table”處理方法
- mysql重裝后出現(xiàn)亂碼設(shè)置為utf8可解決
- 淺析一個MYSQL語法(在查詢中使用count)的兼容性問題
- 解析MySQL中INSERT INTO SELECT的使用
MySQL教程Rss訂閱編程教程搜索
MySQL教程推薦
- MYSQL SET類型字段的SQL操作知識介紹
- SQLServer導(dǎo)出數(shù)據(jù)到MySQL實例介紹
- MySQL SELECT同時UPDATE同一張表問題發(fā)生及解決
- mysql登錄遇到ERROR 1045問題解決方法
- 如何用workbench導(dǎo)出mysql數(shù)據(jù)庫關(guān)系圖
- 把視頻文件直接存儲到mysql數(shù)據(jù)庫的方法
- SQL提示Login failed for user#039;sa#039;錯誤的解決方案
- 網(wǎng)站模板:以數(shù)據(jù)庫字段分組顯示數(shù)據(jù)的sql語句
- Mysql查看版本號的五種方式介紹
- Mysql高性能備份方案解決數(shù)據(jù)不間斷訪問
- 相關(guān)鏈接:
- 教程說明:
MySQL教程-正確理解Mysql中的列索引和多列索引
。