2.mysql資料庫預設採用自動提交(autocommit)模式, 也就是說修改資料(insert、update、delete)的操作會自動的觸發事務,完成事務的提交或者回滾
3.開啟事務使用 begin 或者 start transaction;
4.回滾事務使用 rollback;
5.pymysql 裡面的 conn.commit() 操作就是提交事務
6.pymysql 裡面的 conn.rollback() 操作就是回滾事務
應用場景:
當資料庫中資料量很大時,查詢資料會變得很慢,我們就可以通過索引來提高資料庫的查詢效率。
索引的使用
檢視表中已有索引:
show index from 表名;
說明:主鍵列會自動建立索引
索引的建立:
– 建立索引的語法格式
– alter table 表名 add index 索引名[可選](列名, …)
– 給name欄位新增索引
alter table classes add index my_name (name);
說明:索引名不指定,預設使用欄位名
索引的刪除:
– 刪除索引的語法格式
– alter table 表名 drop index 索引名
– 如果不知道索引名,可以檢視創表sql語句
show create table classes;
alter table classes drop index my_name;
案例-驗證索引查詢效能
建立測試表testindex:
create table test_index(title varchar(10));
向表中插入十萬條資料:
from pymysql import connect
def main():
# 建立connection連線
conn = connect(host=『localhost』,port=3306,database=『python』,user=『root』,password=『mysql』,charset=『utf8』)
# 獲得cursor物件
cursor = conn.cursor()
# 插入10萬次資料
for i in range(100000):
cursor.execute(「insert into test_index values(『ha-%d』)」 % i)
# 提交資料
conn.commit()
ifname== 「main」:
main()
聯合索引
1.減少磁碟空間開銷,因為每建立乙個索引,其實就是建立了乙個索引檔案,那麼會增加磁碟空間的開銷。
2.聯合索引又叫復合索引,即乙個索引覆蓋表中兩個或者多個字段,一般用在多個字段一起查詢的時候。
– 建立teacher表
create table teacher
(id int not null primary key auto_increment,
name varchar(10),
age int
);– 建立聯合索引
alter table teacher add index (name,age);
聯合索引的最左原則
在使用聯合索引的時候,我們要遵守乙個最左原則,即index(name,age)支援 name 、name 和 age 組合查詢,而不支援單獨 age 查詢,因為沒有用到建立的聯合索引。
最左原則示例:
– 下面的查詢使用到了聯合索引
select * from stu where name=『張三』 – 這裡使用了聯合索引的name部分
select * from stu where name=『李四』 and age=10 – 這裡完整的使用聯合索引,包括 name 和 age 部分
– 下面的查詢沒有使用到聯合索引
select * from stu where age=10 – 因為聯合索引裡面沒有這個組合,只有 name | name age 這兩種組合
說明:在使用聯合索引的查詢資料時候一定要保證聯合索引的最左側字段出現在查詢條件裡面,否則聯合索引失效
mysql中索引的優點和缺點和使用原則
優點:加快資料的查詢速度
缺點:建立索引會耗費時間和占用磁碟空間,並且隨著資料量的增加所耗費的時間也會增加
使用原則:
通過優缺點對比,不是索引越多越好,而是需要自己合理的使用。
對經常更新的表就避免對其進行過多索引的建立,對經常用於查詢的字段應該建立索引,
資料量小的表最好不要使用索引,因為由於資料較少,可能查詢全部資料花費的時間比遍歷索引的時間還要短,索引就可能不會產生優化效果。
在一字段上相同值比較多不要建立索引,比如在學生表的"性別"欄位上只有男,女兩個不同值。相反的,在乙個欄位上不同值較多可是建立索引。
mysql索引和事務 MySql索引和事務
mysqlde 索引 目的 是為了加快查詢的速度,避免順序查詢,但是拖慢了插入和刪除的速度.應用在在經常查詢,很少少出插入的場景中.結構 b 樹,n叉搜尋樹,使用鏈式的結構把每一層的節點連線在一起,葉子節點中儲存資料,非葉子節點輔助查詢.主鍵索引和其他索引的不一樣 主鍵索引葉子節點儲存一條一條的資料...
mysql事務索引 mysql事務索引和許可權管理
pysql sql注入 太相信使用者輸入的所有的資料。解決方法 1.自己手動去判斷轉義使用者輸入的資料2.不要拼接sql語句,使用pymysql 的execute方法,防止sql的注入。事務 一組操作,要麼都成功要麼都失敗 四大特性 1.原子性 原子是最小的粒度,所以說一組操作要麼都 成功要麼都失敗...
mysql 索引和事務
索引 索引就類似於書籍的目錄,通過索引,可以提高表中資料的查詢速率 作用 快速定位,檢索資料 使用場景 1 適用於海量資料進行條件查詢 2 適用於查詢經常的依據列,這些列一定很少進行修改操作 3 索引會占用額外的磁碟空間 盡量避免給不定長字串的字段設定索引字段 索引的使用事務 事務就是邏輯上的操作原...