一看就懂的移位操作符總結
阿新 • • 發佈:2020-12-13
技術標籤:mysql
1、準備工作
先建立具有百萬量的資料表 轉自:https://blog.csdn.net/mysqltop/article/details/105230327
#建測試表 drop table if exists t; CREATE TABLE t ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY comment '自增主鍵', dept tinyint not null comment '部門id', name varchar(30) comment '使用者名稱稱', create_time datetime not null comment '註冊時間', last_login_time datetime comment '最後登入時間' ) comment '測試表'; #手工插入第一條測試資料,後面資料會根據這條資料作為基礎生成 insert into t values(1,1,'user_1', '2018-01-01 00:00:00', '2018-03-01 12:00:00'); #初始化序列變數 set @i=1; #==================此處拷貝反覆執行,直接符合預想的資料量=================== #執行20次即2的20次方=1048576 條記錄 #執行23次即2的23次方=8388608 條記錄 #執行24次即2的24次方=16777216 條記錄 #...... insert into t(dept, name, create_time, last_login_time) select left(rand()*10,1) as dept, #隨機生成1~10的整數 concat('user_',@i:
[email protected]+1), #按序列生成不同的name date_add(create_time,interval [email protected]*cast(rand()*100 as signed) SECOND), #生成有時間大順序隨機註冊時間 date_add(date_add(create_time,interval [email protected]*cast(rand()*100 as signed) SECOND), interval + cast(rand()*1000000 as signed) SECOND) #生成有時間大順序的隨機的最後登入時間 from t; select count(1) from t;
2、在mysql中如何檢視語句執行時間
語句:show profiles;
如果執行上述語句不能檢視,則需要檢視是否開啟:show variables like "%pro%";
開啟:setprofiling=1;
關閉:set profiling=0;
3、為什麼使用索引
主要是為了提高查詢效率。沒有索引,MySQL不得不首先以第一條記錄開始,然後讀完整個表直到它找出相關的行。表越大,花費時間越多。
上圖:紅色為建立索引後的查詢時間,綠色為刪除索引後同一條語句的查詢時間。
4、什麼時候使用索引
● 表中該欄位中的資料量龐大
●經常被檢索,經常出現在where子句中的欄位
● 經常被DML操作的欄位不建議新增索引
5、建立索引
語句:create index 索引名 on 表名(欄位名)
alter table 表名 add index 索引名(欄位)
示例:create index myindex on t(name);
alter table t add index(name);
注:主鍵,unique 都會預設的新增索引
6、檢視索引
show index from 表名;
7、刪除索引
drop index 索引名 ON 表名;
alter table 表名 drop index 索引名;