日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql居左查询abcd_MySql速查手册

發(fā)布時間:2025/3/8 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql居左查询abcd_MySql速查手册 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

索引

定義

索引用來快速地尋找那些具有特定值的記錄,所有MySQL索引都以B樹的形式保存。就像是數(shù)據(jù)的目錄。

索引類型

唯一索引

主鍵索引

B-Tree

普通索引

R-Tree

聯(lián)合索引

Hash

全文索引

FullText

在mysql中fulltext索引只針對myisam生效。

符合索引

對于創(chuàng)建的多列索引(復(fù)合索引),不是使用第一部分就不會使用索引。

對于like查詢前面%通配符不會使用索引,通配符在后面會使用索引。

使用or要求所有字段都必須有索引,否則不會使用索引。

索引注意事項(xiàng)

#避免使用雙%號的查詢條件。

如a like '%123%',(如果無前置%,只有后置%,是可以用到列上的索引的)

事務(wù)隔離級別

read uncommitted 未提交讀

所有事務(wù)都可以看到?jīng)]有提交事務(wù)的數(shù)據(jù)。是所有隔離級別中最低的一種,會出現(xiàn)臟讀。

臟讀

那就是我們在一個事務(wù)中可以隨隨便便讀取到其他事務(wù)未提交的數(shù)據(jù),這還是比較麻煩的,我們叫臟讀。

read committed 提交讀

事務(wù)成功提交后才可以被查詢到。

不可重復(fù)讀

那就是我們在會話B同一個事務(wù)中,讀取到兩次不同的結(jié)果。這就造成了不可重復(fù)讀,就是兩次讀取的結(jié)果不同。這種現(xiàn)象叫不可重復(fù)讀。

repeatable 重復(fù)讀

同一個事務(wù)多個實(shí)例讀取數(shù)據(jù)時,可能將未提交的記錄查詢出來,而出現(xiàn)幻讀。

mysql默認(rèn)級別,一個事物中數(shù)據(jù)一致。

Serializable可串行化

強(qiáng)制的進(jìn)行排序,在每個讀讀數(shù)據(jù)行上添加共享鎖。會導(dǎo)致大量超時現(xiàn)象和鎖競爭。

隔離界別查詢

1.查看當(dāng)前會話隔離級別

select @@tx_isolation;

2.查看系統(tǒng)當(dāng)前隔離級別

select @@global.tx_isolation;

3.設(shè)置當(dāng)前會話隔離級別

set session transaction isolatin level repeatable read;

4.設(shè)置系統(tǒng)當(dāng)前隔離級別

set global transaction isolation level repeatable read;

數(shù)據(jù)庫鎖

鎖粒度

表級鎖

行級鎖

頁級鎖

鎖級別

共享鎖

排它鎖

加鎖方式

自動鎖

顯示鎖

操作

DML DDL鎖

使用方式

樂觀鎖

update test_innodb set money=123,version=0+1 where version=0 and id=2;

悲觀鎖

數(shù)據(jù)類型

INT

1.BIT[M]

位字段類型,M表示每個值的位數(shù),范圍從1到64,如果M被忽略,默認(rèn)為1

2.TINYINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為4

很小的整數(shù)。帶符號的范圍是-128到127。無符號的范圍是0到255。

3. BOOL,BOOLEAN

是TINYINT(1)的同義詞。zero值被視為假。非zero值視為真。

4.SMALLINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為6

小的整數(shù)。帶符號的范圍是-32768到32767。無符號的范圍是0到65535。

5.MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為9

中等大小的整數(shù)。帶符號的范圍是-8388608到8388607。無符號的范圍是0到16777215。

6. INT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為11

普通大小的整數(shù)。帶符號的范圍是-2147483648到2147483647。無符號的范圍是0到4294967295。

7.BIGINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為20

大整數(shù)。帶符號的范圍是-9223372036854775808到9223372036854775807。無符號的范圍是0到18446744073709551615。

注意:這里的M代表的并不是存儲在數(shù)據(jù)庫中的具體的長度,以前總是會誤以為int(3)只能存儲3個長度的數(shù)字,int(11)就會存儲11個長度的數(shù)字,這是大錯特錯的。

其實(shí)當(dāng)我們在選擇使用int的類型的時候,不論是int(3)還是int(11),它在數(shù)據(jù)庫里面存儲的都是4個字節(jié)的長度,在使用int(3)的時候如果你輸入的是10,會默認(rèn)給你存儲位010,也就是說這個3代表的是默認(rèn)的一個長度,當(dāng)你不足3位時,會幫你不全,當(dāng)你超過3位時,就沒有任何的影響。

varchar

4.0版本以下,varchar(100),指的是100字節(jié),如果存放UTF8漢字時,只能存33個(每個漢字3字節(jié))

5.0版本以上,varchar(100),指的是100字符,無論存放的是數(shù)字、字母還是UTF8漢字(每個漢字3字節(jié)),都可以存放100個。

UTF8編碼中一個漢字(包括數(shù)字)占用3個字節(jié)

GBK編碼中一個漢字(包括數(shù)字)占用2個字節(jié)

時間類型

date yyyy-mm-dd 日期值

time hh:mm:ss 時間值

year yyyy 年份

datetime yyyy-mm-dd hh:mm:ss 日期

timestamp yyyymmddhhmmss 日期

Java對應(yīng)Mysql類型

Java 類型 SQL 類型

int : java.lang.Integer INTEGER

long : java.lang.Long BIGINT

short : java.lang.Short SMALLINT

float : java.lang.Float FLOAT

double : java.lang.Double DOUBLE

java.math.BigDecimal : NUMERIC

java.lang.String :VARCHAR

byte : java.lang.Byte TINYINT

boolean :java.lang.Boolean bit(值為0或1)

date : LocalDate

time : LocalTime

timestamp : LocalDateTime

常用函數(shù)

#find_in_set

like是廣泛的模糊匹配,字符串中沒有分隔符,find_in_set是精確匹配,字段值以英文”,”分隔,FIND_IN_SET(str,strlist)。 假如字符串str 在由N 子鏈組成的字符串列表strlist 中,則返回值的范圍在 1 到 N 之間

SELECT * from video where find_in_set('4',week);

常用Sql

#性能查詢,用于檢測瓶頸,查看執(zhí)行和擁堵情況

SHOW PROCESSLIST

#分析工具

explain sql

#分步查看sql的最終執(zhí)行順序

1 EXPLAIN EXTENDED

SELECT record_start_time AS 'record_time' FROM iindex.iindex_object_audience_analysis_red_black_natural_cycle WHERE record_start_time >= '2019-04-15'

AND record_start_time <= '2019-06-24' ;

2 SHOW WARNINGS;

#強(qiáng)制使用索引

mysql強(qiáng)制使用索引:force index(索引名或者主鍵PRI)

#查看session是否為自動提交

show variables like "autocommit"

#查看當(dāng)前數(shù)據(jù)庫的字符集

show variables like '%character%'

#查詢索引

show index from 表名

#復(fù)制一張表(也可以先用mysqladmin導(dǎo)出數(shù)據(jù),再導(dǎo)入)

CREATE TABLE tbl1 LIKE tbl;

INSERT INTO tbl1 SELECT * FROM tbl;

#性能檢測

mysql > SET PROFILING = 1;

mysql > ...

mysql > SHOW PROFILES;

存儲引擎

InnoDB

適合場景

數(shù)據(jù)庫的增刪改查都相當(dāng)頻繁

可靠性要求比較高,要求支持事物

MyISAM

適合場景

頻繁執(zhí)行全表count語句

對數(shù)據(jù)進(jìn)行增刪改的頻率不高,查詢非常頻繁

沒有事物

知識點(diǎn)

最左匹配原則

mysql會一直向右匹配知道遇到范圍查詢(>,5 and d=4 如果建立abcd的索引,d就用不到索引。

=和in可以亂序

比如a=1 and b=2 and c=3 建立(a,b,c)索引可以任意順序,mysql的查詢優(yōu)化器會幫你優(yōu)化成索引認(rèn)識的形式

單表

#盡量控制單表數(shù)據(jù)量的大小,建議控制在500萬以內(nèi)

500萬并不是MySQL數(shù)據(jù)庫的限制,過大會造成修改表結(jié)構(gòu),備份,恢復(fù)都會有很大的問題

可以用歷史數(shù)據(jù)歸檔(應(yīng)用于日志數(shù)據(jù)),分庫分表(應(yīng)用于業(yè)務(wù)數(shù)據(jù))等手段來控制數(shù)據(jù)量大小

#限制每張表上的索引數(shù)量,建議單張表索引不超過5個

數(shù)據(jù)庫和表的字符集統(tǒng)一使用UTF8

兼容性更好,統(tǒng)一字符集可以避免由于字符集轉(zhuǎn)換產(chǎn)生的亂碼,不同的字符集進(jìn)行比較前需要進(jìn)行轉(zhuǎn)換會造成索引失效

盡量not null

MYSQL對NULL字段索引優(yōu)化不佳,增加更多的計(jì)算難度,同時在保存與處理NULL類形時,也會做更多的工作,所以從效率上來說,不建議用過多的NULL,解決方法是數(shù)值弄用整數(shù)0,字符串用空來定義默認(rèn)值即可。

業(yè)務(wù)常見問題

特殊字符插入問題

Incorrect string value: '\xF0\x9F\x90\xBE' for column 'nick_name' at row 1

1 數(shù)據(jù)庫字段編碼設(shè)置utf8mb4

2 數(shù)據(jù)庫連接設(shè)置utf8

mysql.dev_ifans.url=jdbc:mysql://192.168.32.114:3306/istar_test?autoReconnect=true&characterEncoding=UTF8

3 以上沒問題檢查數(shù)據(jù)庫連接版本

mysql

mysql-connector-java

5.1.47

標(biāo)簽:lang,java,int,數(shù)據(jù)庫,MySql,手冊,索引,mysql,速查

來源: https://www.cnblogs.com/gustavo/p/12227263.html

總結(jié)

以上是生活随笔為你收集整理的mysql居左查询abcd_MySql速查手册的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。