哪些地方應該創(chuàng)建索引
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
create INDEX idx_status ON table_name(status); select * from table_name where status = 1; 以下條件查詢大概率會走索引:
2. 對于查找單條記錄的字段創(chuàng)建唯一索引唯一鍵對應的數(shù)據(jù)只有一條,要找到這條記錄只能全表掃描,數(shù)據(jù)量大會很慢。加唯一索引可以直接定位到記錄。 create UNIQUE INDEX idx_uid ON table_name(uid); select * from table_name where uid = 123; 3. 在表與表的關聯(lián)鍵上創(chuàng)建索引表JOIN時依靠這個鍵進行關聯(lián),如果不索引就會掃描全表去對比鍵值,數(shù)據(jù)量越大關聯(lián)效率越低。加索引可以快速匹配關聯(lián)鍵值。 create INDEX idx_post_id ON comments(post_id); select * from comments where post_id = 12345; 4. 在經(jīng)常需要排序的字段建立索引排序時如果不加索引,需要全表掃描獲取所有記錄再排序,數(shù)據(jù)量大時排序開銷巨大。索引可以按序直接讀取記錄,避免全表掃描。 create INDEX idx_create_time ON table_name(create_time); select * from table_name ORDER BY create_time DESC; 5. 對于頻繁用于left join的表的關聯(lián)鍵創(chuàng)建索引左連表時都會全表掃描右表去匹配關聯(lián)條件,數(shù)據(jù)量大時非常慢。加索引可以快速過濾出匹配的記錄。 create INDEX idx_user_id ON table_a(user_id); select * from table_a LEFT JOIN table_b ON table_a.user_id = table_b.user_id; 6. 在表的數(shù)據(jù)量巨大時對主鍵創(chuàng)建索引主鍵默認會有索引,如果去掉索引,增刪改查所有操作都會變慢,特別是主鍵查詢需要全表掃描。 create INDEX idx_id ON large_table(id); 7. 對于組合查詢的字段建立聯(lián)合索引單列過濾效果不好時,加聯(lián)合索引可以多列組合過濾提升效率。 這里的使用場景太廣泛,請注意。 假設我們有一個示例表格
我們希望對 在這種情況下,我們可以創(chuàng)建一個聯(lián)合索引,將 create INDEX idx_product_name_category ON products (product_name, category); 以上命令將在 現(xiàn)在,假設我們要執(zhí)行右模糊查詢,找到以字符串 select product_name from products where product_name LIKE 'xyz%' AND category = 'some_category'; 在這個查詢中,MySQL可以有效地利用聯(lián)合索引 8. 在文本字段創(chuàng)建前綴索引上面一點其實說到了模糊查詢的問題,針對模糊查詢,有幾點需要提及:
因此在給文字字段創(chuàng)建索引后,應盡量: 要使
create INDEX idx_title_prefix ON table(title(10)); select * from table where title LIKE 'key%' 原文 該文章在 2023/8/18 9:59:00 編輯過 |
關鍵字查詢
相關文章
正在查詢... |