索引能大大提高查詢速度,同時卻會降低更新表的速度,如對表進行insert、update和delete。因為更新表時,mysql不僅要儲存資料,還要儲存一下索引檔案。建立索引會占用磁碟空間的索引檔案。
索引適用於不經常修改的字段,並且表越大建立索引的效果越明顯。
=1
mobile為索引字段,name為非索引字段
推薦select .
.. from t where mobile=
'13911111111' and name=
'python'
不推薦select .
.. from t where name=
'python' and mobile=
'13911111111'
建立了復合索引 key(a, b, c)
推薦select .
.. from t where a=..
. and b=..
. and c=..
. select .
.. from t where a=..
. and b=..
. select .
.. from t where a=..
. 不推薦 (字段出現順序不符合索引建立的順序)
select .
.. from t where b=..
. and c=..
. select .
.. from t where b=..
. and a=..
. and c=..
....
子查詢
select article_id, title from t_article where user_id in (select user_id from t_user where user_name in (
'itcast'
,'itheima'
,'python'))
關聯查詢(推薦)
select b.article_id, b.title from t_user as a inner join t_article as b on a.user_id=b.user_id where a.user_name in (
'itcast'
,'itheima'
,'python'
);
mysql資料庫的優化
先學習一下mysql的相關優化問題,主要是從提高mysql資料庫伺服器的效能的思路進行考慮,主要包含以下8個方面的優化 1 選取最適用的字段屬性 2 使用連線 join 來代替子查詢 sub queries 3 使用聯合 union 來代替手動建立的臨時表 4 事務 5 鎖定表 6 使用外來鍵 7 ...
Mysql 資料庫的優化
1 儲存引擎選擇 如果資料表需要事務處理,應該考慮使用 innodb,因為它完全符合 acid 特性。如果不需要事務處理,使用預設儲存引擎 myisam 是比較明智的 2 分表分庫,主從。3 對查詢進行優化,要盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索 引4 ...
MySQL資料庫的優化
mysql為何要進行優化 mysql優化是乙個綜合性的技術,主要包括 要保證資料庫的效率,要做好以下四個方面的工作 通俗地理解三個正規化 第一正規化 1nf是對屬性的原子性約束,要求屬性 列 具有原子性,不可再分解 只要是關係型資料庫都滿足1nf 第二正規化 2nf是對記錄的惟一性約束,要求記錄有惟...