MySQL資料庫使用時註意事項 建表的角度上 在使用sql語句的時候 合理創建和時候用索引 ...
MySQL資料庫使用時註意事項
建表的角度上
1、合理安排表關係
2、儘量把固定長度的欄位放在前面
3、儘量使用char 代替varchar
4、分表:水平分和垂直分
在使用sql語句的時候
1、儘量用where來約束範圍到一個比較小範圍的程度,比如分頁
2、儘量使用連表查詢,而不是使用子查詢
3、刪除數據或者修改數據的時候儘量使用主鍵作為條件
4、合理創建和時候用索引
合理創建和時候用索引
正確使用索引
1、查詢的條件欄位不是索引欄位,對哪一個欄位創建了索引就對哪一個欄位做條件查詢
2、在創建索引的時候應該對區分度比較大的列進行創建
1/10以下的重覆率比較適合創建索引
3、範圍
範圍越大越慢
範圍越小越快
!= 慢
like 'a%' 快
like '%a' 慢
4、條件列參與計算/使用函數
5、and 和 or
多個條件的組合,如果使用and連接,其中一列含有索引,都可以加快查找速度
如果使用or連接,必須所有的列都含有索引,才能加快查詢速度
6、聯合索引 (最左首碼原則)必須帶這最左邊的列作為條件,從出現範圍開始整條索引失效
(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';
7、條件中寫出來的數據類型必須和定義的數據類型一致
select * from biao where name = 666 # 不一致
8、select的欄位應該包含order by的欄位
select name,age from 表 order by age 比較好
select name from 表 order by age 不好