mysql -常用

utf-8 一箇中文3個字節 key word(4)是4箇中文 ,3*4=12 相當於建立12字節長度的索引
如果是varchar 會發生相應變化+1到2,所以keylen爲14
key leng

   4倍關係
2進制-16進制-utf-8編碼-漢字
128     32

//select
#清除查詢緩存
RESET QUERY CACHE;

//sql執行狀態
#數據庫執行sql的各種屬性值的大小
show VARIABLES like '%size%';
#將此值設置爲on  mysql會自動爲每一條查詢生成詳細請求
show VARIABLES LIKE 'profiling';
set 'profiling' = on
#查看執行過的查詢 其中有數字id
show PROFILES;
#查看2個查詢的執行狀態屬性
SHOW PROFILE for QUERY 2;


//庫
show databases;

//表
#查看所有表
show TABLES;
#查看建表語句
show create TABLE tab1;

#列出字段
desc table_name;
#更改字段
ALTER TABLE address MODIFY column `NAME` VARCHAR(1) NOT NULL DEFAULT '';

//註釋
ALTER TABLE table_name COMMENT='這是表的註釋';
ALTER table table_name MODIFY `column_name` datetime DEFAULT NULL COMMENT '這是字段的註釋'

//索引操作
show index from product;
#指定索引名稱添加索引,並設置索引長度
alter table product add index type_index (`type`(4)) ;
#添加複合索引
alter table product add index name_type_index (`NAME`,`type`) ;
#刪除索引
alter table product DROP INDEX `type_index`;
#創建索引是可能用到 得到最長的數據 對於使用索引時是個重要參數
select * from product ORDER BY LENGTH(detail) LIMIT 1;
#去重查詢第一個漢字個數  去重後的第一個數的數量  爲a  ,查詢總數爲b  a/b得到佔比,對於使用索引時是個重要參數
select COUNT(DISTINCT LEFT(detail,1))  from  product;
#添加列  建立僞hash字段
ALTER TABLE product ADD crcurl int UNSIGNED not null DEFAULT 0;
UPDATE product SET crcurl = CRC32(`detail`) WHERE detail is not null;
alter table product add index detail_index (`detail`(16)) ;
alter table product add index crcurl_index (crcurl) ;
#從新規整數據和索引文件
ALTER TABLE product ENGINE myisam;
OPTIMIZE TABLE product;

#列出字段

 

 


//調優
當 查詢靠後的數據>10萬  會導致特別慢
limit,offset是先從上到下全表掃描 ,掃描了之前所有沒用的
//表的優化與列的類型選擇
1.整型>datetime>varchar>blob #原因:整型和time運算快節省空間  varcahr需要考慮字符集轉換與排序時的校對集(控制字符排序誰優先的) blob無法使用內存臨時表
2.夠用就行,不用慷慨 #原因;空間大浪費內存導致查詢變慢
3.儘量避免用null #原因: null不利於索引,null實際佔據空間更大 NULL 和其他 + - * / 都爲null
//sql執行順序,想要優化SQL,必須清楚知道SQL的執行順序,這樣再配合explain才能事半功倍!完整SQL語句
select distinct
        <select_list>
from
    <left_table><join_type>
join <right_table> on <join_condition>
where
    <where_condition>
group by
    <group_by_list>
having
    <having_condition>
order by
    <order_by_condition>
limit <limit number>

SQL執行順序

1、from <left_table><join_type>
2、on <join_condition>
3、<join_type> join <right_table>
4、where <where_condition>
5、group by <group_by_list>
6、having <having_condition>
7、select
8、distinct <select_list>
9、order by <order_by_condition>
10、limit <limit_number>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章