MySQL數據庫使用時注意事項
建表的角度上
一、合理安排表關係
二、儘可能把固定長度的字段放在前面
三、儘可能使用char 代替varchar
四、分表:水平分和垂直分
在使用sql語句的時候
一、儘可能用where來約束範圍到一個比較小範圍的程度,好比分頁
二、儘可能使用連表查詢,而不是使用子查詢
三、刪除數據或者修改數據的時候儘可能使用主鍵做爲條件
四、合理建立和時候用索引
合理建立和時候用索引
正確使用索引
一、查詢的條件字段不是索引字段,對哪個字段建立了索引就對哪個字段作條件查詢
二、在建立索引的時候應該對區分度比較大的列進行建立
1/10如下的重複率比較適合建立索引
三、範圍
範圍越大越慢
範圍越小越快
!= 慢
like 'a%' 快
like '%a' 慢
四、條件列參與計算/使用函數
五、and 和 or
多個條件的組合,若是使用and鏈接,其中一列含有索引,均可以加快查找速度
若是使用or鏈接,必須全部的列都含有索引,才能加快查詢速度
六、聯合索引 (最左前綴原則)必須帶這最左邊的列做爲條件,從出現範圍開始整條索引失效
(id,name,email)
select * from s1 where id = 1800000 and name = 'eva' and email = 'eva1800000@oldboy';
select * from s1 where id = 1800000 and name = 'eva';
select * from s1 where id = 1800000 and email = 'eva1800000@oldboy';
select * from s1 where id = 1800000;
select * from s1 where name = 'eva' and email = 'eva1800000@oldboy';
(email,id,name)
select * from s1 where id >10000 and email = 'eva1800000@oldboy';
七、條件中寫出來的數據類型必須和定義的數據類型一致
select * from biao where name = 666 # 不一致
八、select的字段應該包含order by的字段
select name,age from 表 order by age 比較好
select name from 表 order by age 很差