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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一般的查询加载

發(fā)布時間:2024/4/17 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一般的查询加载 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.查詢重寫技術(shù)

? ?1 不要引用索引列在一個表達式。這樣將阻止使用索引列。代替是應(yīng)該在比較的邊使用盡可能的。加入一個表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.當使用索引是采用和列相同的數(shù)據(jù)類型

? ? where id=18

? ? where id='18'

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

23.3.2 使用explain來獲得優(yōu)化信息

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

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

22.3.3 優(yōu)化查詢通過限制輸出

? ?limit限制輸出

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


22.3.4 使用summary表

22.3.5 優(yōu)化更新

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

? ?2.explain被使用select查詢,但是你可能發(fā)現(xiàn)它是有用分析update和delete語句。

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

如果你正在使用InnoDB表,你可以得到更好的性能通過分組他們在一個transaction而不是執(zhí)行他們自動提交

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

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

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

22.4 選擇恰當?shù)拇鎯σ?/p>

當創(chuàng)建一個表時,詢問你自己那種類型的查詢你正在使用。任何選擇一個存儲引擎。當需要處理查詢和很多更新是使用INNoDB引擎。如果你正在使用MyISAM表,選擇他們的結(jié)構(gòu)來反映是否你考慮處理速度的效率或磁盤的使用率。不同的MYISAM存儲跟上有不同的性能的特征。這影響你選擇固定長度或可變長度的列來存儲字符數(shù)據(jù):

? ?1.使用固定的列入(CHAR,Binary)為了更好的加速

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

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

對于INnodb,它是也是正確的使用Char列將花費更多的存儲空間比varchar。但是沒有額外的加速相比MyISAM,因為InnoDB引擎的實現(xiàn)存儲對于char和varchar是相似的。

MeRGE表能夠使用壓縮和非壓縮表的混合。這能偶使有用的對于基于時間紀錄的。例如,你例如日志紀錄,對于當前年的表可以使用非壓縮的表,對于以前的日志使用壓縮表。如果創(chuàng)建merge表來自collection,可以很容查詢所有的表。

他將多個表在邏輯上當作一個表來查詢。他建立后有兩個文件,
.frm 表結(jié)構(gòu)定義
.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. 此表結(jié)構(gòu)必須與基本表完全一致,包括列名、順序。UNION表必須同屬一個DATABASE。
3. 基本表類型必須是MyISAM。
4. 可以通過修改.mrg文件來修改MERGE表,每個基本表的名字占一行。注意:修改后要通過FLUSH TABLES刷新表緩存。
5. 對基本表的更改可以直接反映在此表上。
6. INSERT_METHOD的取值可以是: 0 不允許插入 FIRST 插入到UNION中的第一個表 LAST 插入到UNION中的最后一個表。(4.0之后可用)
7. 定義在它上面的約束沒有任何作用,約束是由基本表控制的,例如兩個基本表中存在著同樣的一個Key值,那么在MERGE表中會有兩個一樣的Key值。


與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的一般的查询加载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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