一般的查詢載入

2021-07-15 21:43:10 字數 2467 閱讀 4460

1.查詢重寫技術

1 不要引用索引列在乙個表示式。這樣將阻止使用索引列。代替是應該在比較的邊使用盡可能的。加入乙個表t包含乙個date  d列。 如下

select * from t where year>=1884代替使用select * from t where d>='1994-01-01';

2.索引是特別有用的對於連線比較兩個表中的列如下:

select* from country,countrylanguage

where country.code=countrylanguage.countrycode;

3.當使用索引是採用和列相同的資料型別

where id=18

where id='18'

4.在某種情況下,可以使用模式匹配,開始是字母時很有效

23.3.2 使用explain來獲得優化資訊

explain select* from t where year >=1994\g

explain select* from t where d>='1994-o1-01'\g可以看到減少了查詢了行

22.3.3 優化查詢通過限制輸出

limit限制輸出

對於特別大的表如果要取出幾行,使用limit並不能達到很好的效果。使用where很好

22.3.4 使用summary表

22.3.5 優化更新

1.盡量使用where語句,在比較時使用索引

2.explain被使用select查詢,但是你可能發現它是有用分析update和delete語句。

3.使用多行的插入代替多個單行的插入

如果你正在使用innodb表,你可以得到更好的效能通過分組他們在乙個transaction而不是執行他們自動提交

4.對於儲存引擎,load data infile是更快比多行插入

5.可以disable index,當載入元素進入乙個空的myisam表時來加速操作。

6.為了替代存在的行,使用replace而不是delete+insert

22.4 選擇恰當的儲存引擎

當建立乙個表時,詢問你自己那種型別的查詢你正在使用。任何選擇乙個儲存引擎。當需要處理查詢和很多更新是使用innodb引擎。如果你正在使用myisam表,選擇他們的結構來反映是否你考慮處理速度的效率或磁碟的使用率。不同的myisam儲存跟上有不同的效能的特徵。這影響你選擇固定長度或可變長度的列來儲存字元資料:

1.使用固定的列入(char,binary)為了更好的加速

2.使用可變長度的列入(varchar,varvinary text ,blob)為了更好使用磁碟空間。

另外使用myisam引擎的表被用來使用壓縮的可讀表。

對於innodb,它是也是正確的使用char列將花費更多的儲存空間比varchar。但是沒有額外的加速相比myisam,因為innodb引擎的實現儲存對於char和varchar是相似的。

merge表能夠使用壓縮和非壓縮表的混合。這能偶使有用的對於基於時間紀錄的。例如,你例如日誌紀錄,對於當前年的表可以使用非壓縮的表,對於以前的日誌使用壓縮表。如果建立merge表來自collection,可以很容查詢所有的表。

他將多個表在邏輯上當作乙個表來查詢。他建立後有兩個檔案,

.frm 表結構定義

.mrg union表的名字清單

兩個基本表:

create table test_merge_1(

id int(5) not null,

value varchar(100) not null,

primary key(id)

)create table test_merge_2(

id int(5) not null,

value varchar(100) not null,

primary key(id)

) merge表的建立:

create table test_merge(

id int(5) not null,

value varchar(100) not null,

primary key(id)

) type=merge union=(test_merge_1,test_merge_2) insert_method=last;

1. 此表類似於sql中的union機制。

2. 此表結構必須與基本表完全一致,包括列名、順序。union表必須同屬乙個database。

3. 基本表型別必須是myisam。

4. 可以通過修改.mrg檔案來修改merge表,每個基本表的名字佔一行。注意:修改後要通過flush tables重新整理表快取。

5. 對基本表的更改可以直接反映在此表上。

6. insert_method的取值可以是: 0 不允許插入 first 插入到union中的第乙個表 last 插入到union中的最後乙個表。(4.0之後可用)

7. 定義在它上面的約束沒有任何作用,約束是由基本表控制的,例如兩個基本表中存在著同樣的乙個key值,那麼在merge表中會有兩個一樣的key值。

查詢優化的一般準則

1.選擇運算應盡量先做。最重要,最基本的一條。2.執行連線前應對關係適當的預處理。student 與 sc 進行自然連線 a.索引連線 a.1.在表sc上建立sno索引。a.2 對student組中的每乙個元組,有sno值通過sc的索引查詢相應的sc元組 a.3 把student和sc連線起來 b....

Java Class類載入資源的一般方法

從 classpath 裡面進行資源讀取 載入,一般採用class.getresourceasstream和classloader.getresourceasstream方法。class.getresourceasstream主要用於讀取相對於當前class的資源 classloader.getre...

MySQL 一般模糊查詢的幾種用法

1.表示零個或多個字元。在某些情況下需要中文查詢,一般用兩個 來查詢,即 select from user where name like 五 表示 查詢user表中的name為 xx五xx 五xx xx五 的資訊 select user from where name like 王 五 能搜尋出 ...