問題描述:資料表中有百萬資料,分別屬於user 1,user 2,user 3,三個使用者資料量相當,為提高查詢速度,我在排序的字段上加了索引。查詢語句如下
select keywords from search_history where user_id=1 order by update_time limit 10;
問題來了,查詢user 1和user 2的時間竟然相差幾十倍!
研究過程:剛開始認為是查詢欄位有空值導致查詢沒有用索引而是全表掃瞄,隨即我查詢了一下的確有空值,但當我將空值記錄刪除後問題依舊,這讓
我百思不得其解。老師提醒我是不是因為外來鍵的原因導致的,我嘗試了一下,將user_id 的外來鍵去除,再次查詢,奇蹟出現了,查詢時間提公升幾十倍。
原因:外來鍵約束用來保證資料的一致性和完整性,但會增加資料庫負荷,user 表與多個表有關聯,user2 在這些表中均有資料,故其速度很慢。在效能
要求較高,安全性要求次之的系統中(可由程式控制),建議不用外來鍵。
大資料查詢的優化:資料結構優化,索引優化,慢查詢優化,mysql引數設定優化
MySQL資料查詢
1.基本查詢語句 select語句是最常用的查詢語句,它的使用方式有些複雜,但功能卻相當強大。select selection list 要查詢的內容,選擇哪些列 from資料表名 制定資料表 where primary constraint 查詢時需要滿足的條件,行必須滿足條件 2.單錶查詢 單錶...
mysql資料連線查詢 mysql 資料查詢
連線查詢 1.連線 join 也稱 連線,從兩個關係的笛卡爾積中選擇屬性間滿足一定條件的元組。等值連線 為 的連線運算稱為等值連線。從關係r和s的廣義笛卡爾積中選取a b屬性值相等的元組。自然連線 一種特殊的等值連線。要求關係中進行比較的分量必須是同名的屬性組,並且在結果中把重複的屬性去掉。外連線 ...
mysql資料查詢之子查詢
子查詢概念 sub query select select 1 標量子查詢 where 之後寫 確定某乙個值 select from student where c id select idfrom class where grade pm3.1 2 列子查詢 where 之後 寫 in,是一列的所...