MySQL數據庫使用時注意事項

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  很差
相關文章
相關標籤/搜索