1、直接讀文件相比數(shù)據(jù)庫(kù)查詢效率更勝一籌,而且文中還沒算上連接和斷開的時(shí)間。
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供伊川網(wǎng)站建設(shè)、伊川做網(wǎng)站、伊川網(wǎng)站設(shè)計(jì)、伊川網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、伊川企業(yè)網(wǎng)站模板建站服務(wù),10多年伊川做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
2、一次讀取的內(nèi)容越大,直接讀文件的優(yōu)勢(shì)會(huì)越明顯(讀文件時(shí)間都是小幅增長(zhǎng),這跟文件存儲(chǔ)的連續(xù)性和簇大小等有關(guān)系),這個(gè)結(jié)果恰恰跟天緣預(yù)料的相反,說明MYSQL對(duì)更大文件讀取可能又附加了某些操作(兩次時(shí)間增長(zhǎng)了近30%),如果只是單純的賦值轉(zhuǎn)換應(yīng)該是差異偏小才對(duì)。
3、寫文件和INSERT幾乎不用測(cè)試就可以推測(cè)出,數(shù)據(jù)庫(kù)效率只會(huì)更差。
4、很小的配置文件如果不需要使用到數(shù)據(jù)庫(kù)特性,更加適合放到獨(dú)立文件里存取,無需單獨(dú)創(chuàng)建數(shù)據(jù)表或記錄,很大的文件比如圖片、音樂等采用文件存儲(chǔ)更為方便,只把路徑或縮略圖等索引信息放到數(shù)據(jù)庫(kù)里更合理一些。
5、PHP上如果只是讀文件,file_get_contents比fopen、fclose更有效率,不包括判斷存在這個(gè)函數(shù)時(shí)間會(huì)少3秒左右。
6、fetch_row和fetch_object應(yīng)該是從fetch_array轉(zhuǎn)換而來的,我沒看過PHP的源碼,單從執(zhí)行上就可以說明fetch_array效率更高,這跟網(wǎng)上的說法似乎相反。
本文實(shí)例講述了php使用mysqli和pdo擴(kuò)展,測(cè)試對(duì)比mysql數(shù)據(jù)庫(kù)的執(zhí)行效率。分享給大家供大家參考,具體如下:
?php
/**
*
測(cè)試pdo和mysqli的執(zhí)行效率
*/
header("Content-type:text/html;charset=utf-8");
//通過pdo鏈接數(shù)據(jù)庫(kù)
$pdo_startTime
=
microtime(true);
$pdo
=
new
PDO("mysql:host=localhost;dbname=test","root","1234",array(PDO::MYSQL_ATTR_INIT_COMMAND
=
"SET
NAMES'utf8';"));
for($i=1;$i=100;$i++){
$title
=
"pdo標(biāo)題".$i;
$content
=
"pdo內(nèi)容".$i;
$addtime
=
time();
$user_id
=
$i;
$pdo_sql
=
"INSERT
INTO
`article`(`title`,`content`,`addtime`,`user_id`)
VALUES(:title,:content,:addtime,:user_id)";
$sth
=
$pdo-prepare($pdo_sql);
$sth-bindParam(':title',$title);
$sth-bindParam(':content',$content);
$sth-bindParam(':addtime',$addtime);
$sth-bindParam(':user_id',$user_id);
$sth-execute();
}
$pdo_endTime
=
microtime(true);
$pdo_time
=
$pdo_endTime
-
$pdo_startTime;
echo
$pdo_time;
echo
"hr/";
//通過mysql鏈接數(shù)據(jù)庫(kù)
$mysqli_startTime
=
microtime(true);
$mysqli
=
mysqli_connect("localhost","root","1234","test")
or
die("數(shù)據(jù)連接失敗");
mysqli_query($mysqli,"set
names
utf8");
for($i=1;$i=100;$i++){
$title
=
"mysqli標(biāo)題".$i;
$content
=
"mysqli內(nèi)容".$i;
$addtime
=
time();
$user_id
=
$i;
$sql
=
"INSERT
INTO
`article`(`title`,`content`,`addtime`,`user_id`)
VALUES('".$title."','".$content."',".$addtime.",".$user_id.")";
mysqli_query($mysqli,$sql);
}
$mysqli_endTime
=
microtime(true);
$mysqli_time
=
$mysqli_endTime
-
$mysqli_startTime;
echo
$mysqli_time;
echo
"hr/";
if($pdo_time
$mysqli_time){
echo
"pdo的執(zhí)行時(shí)間是mysqli的".round($pdo_time/$mysqli_time)."倍";
}else{
echo
"mysqli的執(zhí)行時(shí)間是pdo的".round($mysqli_time/$pdo_time)."倍";
}
測(cè)試結(jié)果:其實(shí)經(jīng)過多次測(cè)試,pdo和mysqli的執(zhí)行效率差不多。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP基于pdo操作數(shù)據(jù)庫(kù)技巧總結(jié)》、《php+mysqli數(shù)據(jù)庫(kù)程序設(shè)計(jì)技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:php使用mysqli和pdo擴(kuò)展,測(cè)試對(duì)比連接mysql數(shù)據(jù)庫(kù)的效率完整示例php中數(shù)據(jù)庫(kù)連接方式pdo和mysqli對(duì)比分析php中關(guān)于mysqli和mysql區(qū)別的一些知識(shí)點(diǎn)分析php操作mysqli(示例代碼)php封裝的mysqli類完整實(shí)例PHP以mysqli方式連接類完整代碼實(shí)例php簡(jiǎn)單解析mysqli查詢結(jié)果的方法(2種方法)php中mysql連接方式PDO使用詳解Php中用PDO查詢Mysql來避免SQL注入風(fēng)險(xiǎn)的方法php
mysql
PDO
查詢操作的實(shí)例詳解PHP實(shí)現(xiàn)PDO的mysql數(shù)據(jù)庫(kù)操作類
你可以把連接的方法寫進(jìn)類里,讓它形成方法比如
class something {
global $db;
function web_db(){
$this-db = $this-database(); //把連接方法存如屬性里
}
function database($server = 'localhost',$root = 'root',$pass = '****'){
......//這里寫你的連接方法,及其關(guān)聯(lián)表操作
}
...//其他方法
} //class end
在你的頁(yè)面程序中這樣寫
require_once "web_common.class.php";//包進(jìn)你的類文件
$mysql = new something;
在你需要數(shù)據(jù)查詢或?qū)懭氲臅r(shí)候只要調(diào)用 $mysql-db;就好了
如上你可以看出,無論你有多少客戶請(qǐng)求數(shù)據(jù)庫(kù),而數(shù)據(jù)庫(kù)只在載入頁(yè)面時(shí)連接一次而已,調(diào)用 $mysql-db 只是請(qǐng)求程序,請(qǐng)求方法而已,沒有請(qǐng)求數(shù)據(jù)庫(kù)。第一,數(shù)據(jù)庫(kù)連接查詢只有一次;第二無形中也加快了頁(yè)面的載入速度。
記住,你做網(wǎng)頁(yè)不是給一個(gè)人兩個(gè)人用的,而是很很很多個(gè),為了保證數(shù)據(jù)庫(kù)的正常使用,在多請(qǐng)求的情況下依然能很好工作,這是個(gè)很好的辦法。
最后close是可寫可不寫的,因?yàn)楫?dāng)mysql沒有請(qǐng)求時(shí),它會(huì)自動(dòng)關(guān)閉。
因?yàn)槌绦蚍謨煞N。一是邏輯層 ,二是數(shù)據(jù)層。邏輯層一般是進(jìn)行運(yùn)算的,比如一些算法。這個(gè)很影響執(zhí)行效率的。然而數(shù)據(jù)層多數(shù)是用來存儲(chǔ)數(shù)據(jù)的。比如用戶信息、內(nèi)容等。這些沒有好的辦法優(yōu)化。但是你所謂的優(yōu)化數(shù)據(jù)連接我沒太理解。一般也會(huì)做數(shù)據(jù)優(yōu)化。比如mysql性能優(yōu)化、數(shù)據(jù)緩存、數(shù)據(jù)查詢等。還有就是分布式部署等。希望能幫到你。
名稱欄目:php鏈接數(shù)據(jù)庫(kù)的效率 php鏈接數(shù)據(jù)庫(kù)的效率是多少
瀏覽路徑:http://vcdvsql.cn/article14/ddigede.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、面包屑導(dǎo)航、Google、定制網(wǎng)站、網(wǎng)站制作、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)