国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL中Stmt 預處理提高效率問題的小研究

2024-07-24 12:44:16
字體:
供稿:網(wǎng)友
復制代碼 代碼如下:

DELIMITER $$
set @stmt = 'select userid,username from myuser where userid between ? and ?';
prepare s1 from @stmt;
set @s1 = 2;
set @s2 = 100;
execute s1 using @s1,@s2;
deallocate prepare s1;
$$
DELIMITER ;

用這種形式寫的查詢,可以隨意替換參數(shù),給出代碼的人稱之為預處理,我想這個應該就是MySQL中的變量綁定吧……但是,在查資料的過程中我卻聽到了兩種聲音,一種是,MySQL中有類似Oracle變量綁定的寫法,但沒有其實際作用,也就是只能方便編寫,不能提高效率,這種說法在幾個09年的帖子中看到:
http://www.itpub.net/thread-1210292-1-1.html
http://cuda.itpub.net/redirect.php?fid=73&tid=1210572&goto=nextnewset
另一種說法是MySQL中的變量綁定是能確實提高效率的,這個是希望有的,那到底有木有,還是自己去試驗下吧。
試驗是在本機進行的,數(shù)據(jù)量比較小,具體數(shù)字并不具有實際意義,但是,能用來說明一些問題,數(shù)據(jù)庫版本是mysql-5.1.57-win32免安裝版。
  本著對數(shù)據(jù)庫不是很熟悉的態(tài)度^_^,試驗過程中走了不少彎路,此文以結論為主,就不列出實驗的設計過程,文筆不好,文章寫得有點枯燥,寫出來是希望有人來拍磚,因為我得出的結論是:預處理在有沒有cache的情況下的執(zhí)行效率都不及直接執(zhí)行…… 我對自己的實驗結果不愿接受。。如果說預處理只為了規(guī)范下Query,使cache命中率提高的話個人覺得大材小用了,希望有比較了解的人能指出事實究竟是什么樣子的——NewSilen
實驗準備
  第一個文件NormalQuery.sql
復制代碼 代碼如下:

Set profiling=1;
Select * From MyTable where DictID = 100601000004;
Select DictID from MyTable limit 1,100;
Select DictID from MyTable limit 2,100;
/*從limit 1,100 到limit 100,100 此處省略重復代碼*/
......
Select DictID from MyTable limit 100,100;
SELECT query_id,seq,STATE,10000*DURATION FROM information_schema.profiling INTO OUTFILE 'd:/NormalResults.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '/n';

第二個sql文件 StmtQuery.sql
復制代碼 代碼如下:

Set profiling=1;
Select * From MyTable where DictID = 100601000004;
set @stmt = 'Select DictID from MyTable limit ?,?';
prepare s1 from @stmt;
set @s = 100;
set @s1 = 101;
set @s2 = 102;
......
set @s100 =200;
execute s1 using @s1,@s;
execute s1 using @s2,@s;
......
execute s1 using @s100,@s;
SELECT query_id,seq,STATE,10000*DURATION FROM information_schema.profiling INTO OUTFILE 'd:/StmtResults.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '/n';

做幾點小說明:
1. Set profiling=1; 執(zhí)行此語句之后,可以從information_schema.profiling這張表中讀出語句執(zhí)行的詳細信息,其實包含不少內(nèi)容,包括我需要的時間信息,這是張臨時表,每新開一個會話都要重新設置profiling屬性才能從這張表中讀取數(shù)據(jù)
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 普安县| 沧源| 磐安县| 白山市| 双江| 咸宁市| 从化市| 浮梁县| 陵水| 望城县| 平泉县| 陆川县| 泰安市| 阳山县| 长乐市| 光山县| 中方县| 庆城县| 沾益县| 高雄市| 高阳县| 云阳县| 肥乡县| 喀什市| 金堂县| 凌源市| 德庆县| 寿阳县| 九龙坡区| 桑日县| 西乌珠穆沁旗| 繁昌县| 杨浦区| 大竹县| 古蔺县| 东明县| 太仆寺旗| 兰西县| 喀喇沁旗| 吴堡县| 汉川市|