2012-11-21 50 views
2

如果我想用php閱讀,100 lines,哪個更快?從MySql table或簡單的Text File讀取它們?從mysql讀取100行每行50個字符或從文本文件中讀取它們會更快嗎?

+0

取決於很多事情。他們將如何被放置在MySQL表中?這些條目是靜態的嗎?這些線條看起來如何?你需要提供更多的細節。 –

+1

取決於許多因素。文本中的100行是文本文件中的* only *事項,還是您必須掃描它?是mysql服務器本地還是在另一臺機器上,你可以用mysql索引一個合適的索引來找到它的數據嗎?試試看看你的結果是什麼。 – drew010

+0

你說的5K個字符。你爲什麼擔心速度? –

回答

6

使用任何適合你更好。

對於100行和一次讀取一次操作,性能差異將非常小,根本無關緊要。

+2

文本文件可能不像維護數據庫那樣麻煩 - 例如,您可以輕鬆移動腳本,而不必導出和導入數據庫轉儲。 –

+0

我完全同意你的看法! – Alex

0

轉到MySQL。如果將其與文本文件中的讀數進行比較,IT速度會更快。

+0

好吧,我會考慮你的建議。我會測試我的代碼,然後將回到這裏與無聊的細節! :) – Alex

0

如果文件只包含100行(因此您基本上從頭到尾閱讀它),並且您不必過濾它,那麼從文件讀取更快。

MySQL也從文件中讀取(某些內容也被緩存在RAM中)。

既然你提到了MySQL,我懷疑它並不那麼簡單。如果它不只是去了MySQL和你會很高興;)

2

試試看:

$time_start = microtime(); 
$mysqli->query("SELECT * FROM TABLE LIMIT 100"); 
$time_end = microtime(); 
echo 'TIME: '.($time_end-$time_start).'<br>'; 

$time_start = microtime(); 
$fh = fopen("file.txt",'r'); 
$x=0; 
while(($row = fgets($fh, 4096)) !== false) { 
    if($x>100){ 
     break; 
    } 
    $x++; 
} 
fclose($fh); 
$time_end = microtime(); 
echo 'TIME: '.($time_end-$time_start).'<br>'; 

這似乎對我來說,定位在服務器上,打開一個文件,運行,&關閉會比有活動的數據庫連接慢。但是,我不確定。

+0

這真棒男人非常好主意! ;) – Alex

0

就像另一個說的那樣,差別應該很小。如果你真的需要最快的訪問時間,MySQL HEAP(內存)表的返回速度應該比文件訪問快得多。