不建議使用 force index()索引,使用聯合索引就可以解決問題!!!
最近解決mysql慢查詢問題,先把sql大概說明下
select id from table where type = 1 and XX= xx and XX1= xx1 and XX2 = xx2 order by time desc
再說一下背景,之前的開發人員建了兩個索引 index_type和index_time, 結果mysql 一直是按照index_time索引來查詢的,查詢比較慢,後來有人想到用force index(index_type)解決,這樣指定按照某個索引來查詢,查詢效率很高。但是指定索引就帶來維護成本,比如哪天資料庫改動需要刪除索引index_type,如果忘記修改程式,程式必然會報錯。
最後是通過聯合索引解決的,刪除index_type,新建一個聯合索引index_type_time,這樣就很好的解決了問題。
遇到的問題,記錄下來,如果不小心幫到你了,倍感榮幸,歡迎批評指正討論。
相關推薦
mysql中,索引,主鍵,唯一索引,聯合索引的區別
索引是一種特殊的檔案(InnoDB資料表上的索引是表空間的一個組成部分),它們包含著對資料表裡所有記錄的引用指標。 普通索引(由關鍵字KEY或INDEX定義的索引)的唯一任務是加快對資料的訪問速度。 普通索引允許被索引的資料列包含重複的值。如果能確定某個資料列將只包含彼此各
SQL有三個類型的索引,唯一索引 不能有重復,但聚集索引,非聚集索引可以有重復
返回 自動添加 post 設置 span 唯一索引 tca lock 所有 重要: (1) SQL如果創建時候,不指定類型那麽默認是非聚集索引 (2) 聚集索引和非聚集索引都可以有重復記錄,唯一索引不能有重復記錄。 (3) 主鍵 默認是加了唯一約束的聚集索引,但是也可
4.非關系型數據庫(Nosql)之mongodb:普通索引,唯一索引
log 索引 xpl sys watermark lang mon style gravity 一:普通索引 1創建一個新的數據庫 > use toto; switched to db toto
MongoDB 學習筆記之 TTL索引,部分索引和文本索引
強制 類型 支持 行存儲 pan 事件 搜索 篩選 ext TTL索引: TTL集合支持mongodb對存儲的數據進行失效時間設置,經過指定的時間段後、或在指定的時間點過期,集合自動被mongod清除。這一特性有利於對一些只需要保存一定時間的數據信息進行存儲,比如機器產生
ehcache.xml 配置文件備忘錄(不建議出現中文註釋,此處備忘)
名稱 lns 配置文件 start sch mes sin ear eat <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="..
MongoDB索引管理——創建索引,查看索引,刪除索引,重建索引
大小 exsi ngs 索引 mongodb reat 新建 mon 集合 先給users集合插入兩條記錄,然後用users集合來進行索引管理的演示: > user1={"name":"liming","age":20,"gender":"F"} { "name" :
單列索引和聯合索引區別
csdn 搜索 fontsize 添加 lai water 描述 plain 版本 原文鏈接:https://blog.csdn.net/Abysscarry/article/details/80792876 一、聯合索引測試 註:Mysql版本為 5.7.20 我們
mysql索引、主鍵、唯一索引、聯合索引的區別(索引的建立原則和注意事項)
索引對資料庫效能的影響? 本質:縮小查詢範圍。大大減少需要掃描的資料量。大大提高查詢的速度,降低寫的速度,佔用磁碟。將隨機I/O變成順序I/O 特大的表怎麼解決查詢問題? 分割槽。 主鍵索引和唯一索引的區別? 一個表只能有一個主鍵索引,但可以有多個唯一索引, 主鍵索引是唯一索
oracle索引,分析索引,索引碎片整理
41.oracle索引,分析索引,索引碎片整理 概述 索引分為B樹索引和點陣圖索引。我們主要研究B樹索引,B樹索引如下圖(圖片源自網路): 索引是與表相關的一個可選結構,在邏輯上和物理上都獨立於表資料,索引能優化查詢,不能優化DM
BTREE索引和HASH索引,聚集索引和非聚集索引
https://www.jianshu.com/p/76530afa13cb https://blog.csdn.net/yifanSJ/article/details/79220044 BTREE索引和HASH索引 1、不同引擎的預設索引 不同的引擎對於索引有不同的支援:Innod
mysql普通索引和聯合索引測試
索引就用空間來換取時間 explain學習和引數代表的意思請參考 https://blog.csdn.net/ywdhzxf/article/details/84316712 下面我會用explain 來測試聯合索引和普通索引的作用項, 只測兩個欄位, source和name 有
loc,iloc,列索引,布林索引的使用
結論: 1,loc,iloc,df.ename,df[‘ename’],df[[‘ename’]]都是引用的方式進行訪問,也就是說被引用的資料發生改變,那麼df資料也會發生改變 2,如果只拿一列(一個特徵值)資料,那麼返回的一般是Series型別,達到兩列或者以上,一般是Dataframe型
mysql索引查詢--聯合索引查詢
在利用B-Tree索引進行查詢的過程中,有幾點注意事項,我們以表A進行說明。其中表A的定義如下: create table A(id int auto_increment primary key, name varchar(10), age tinyint, sex e
MySQL 新增索引,刪除索引及其用法
一.索引的作用 一般的應用系統,讀寫比例在10:1左右,而且插入操作和一般的更新操作很少出現效能問題,遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作,所以查詢語句的優化顯然是重中之重。 在資料量和訪問量不大的情況下,mysql訪問是非常
資料庫常見索引解析(B樹,B-樹,B+樹,B*樹,點陣圖索引,Hash索引)
B樹 即二叉搜尋樹: 1.所有非葉子結點至多擁有兩個兒子(Left和Right); 2.所有結點儲存一個關鍵字; 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹; 如:
MongoDB效能篇 -建立索引,組合索引,唯一索引,刪除索引和explain執行計劃
一、索引 MongoDB 提供了多樣性的索引支援,索引資訊被儲存在system.indexes 中,且預設總是為_id建立索引,它的索引使用基本和MySQL 等關係型資料庫一樣。其實可以這樣說說,索引是凌駕於資料儲存系統之上的另一層系統,所以各種結構迥異的儲存都有相同或
Python-Numpy多維陣列--切片,索引,高階索引,布林索引
一、Numpy 切片和索引 ndarray物件的內容可以通過索引或切片來訪問和修改,就像 Python 的內建容器物件一樣。 如前所述,ndarray物件中的元素遵循基於零的索引。 有三種可用的索引方法型別: 欄位訪問,基本切片和高階索引。 基本切片是 Python
多個單列索引和聯合索引的區別詳解
背景: 為了提高資料庫效率,建索引是家常便飯;那麼當查詢條件為2個及以上時,我們是建立多個單列索引還是建立一個聯合索引好呢?他們之間的區別是什麼?哪個效率高呢?我在這裡詳細測試分析下。 一、聯合索引測試 注:Mysql版本為 5.7.20 建立測試表
資料庫引擎,資料庫索引,MySQL索引的優化,分表分庫
資料庫引擎 InnoDB mysql中儲存資料的地方在安裝檔案的ibdata1中 ,如果資料過大後會再次生成一個 ibdata_xxxx 檔案出來 MyISAM 儲存資料是在安裝檔案的中data資料夾下的以資料庫名稱命名的資料夾下,frm 檔案字尾結尾 Inn
mysql單個索引和聯合索引的區別
聯合索引和單個索引的區別: 如果我們建立了(area, age,salary)的複合索引,那麼其實相當於建立了: (area,age,salary),(area,age)、(area)三個索引,這被稱為最佳左字首 特性。因此我們在建立複合索引時應該將最常用作限制條件的列