MyPHP應用程序通過HTTPClient向MySQL發送SELECT語句。MySQL的性能
需要大約20秒或更長時間。 我以爲MySQL無法立即得到結果,因爲MySQL管理員在等待結果時顯示爲sending data
或copying to tmp table
。
但是,當我從另一個應用程序,如phpMyAdmin或jmater發送相同的SELECT語句,它需要2秒或更少的10倍!
有人知道MySQL的性能如此不同嗎?
MyPHP應用程序通過HTTPClient向MySQL發送SELECT語句。MySQL的性能
需要大約20秒或更長時間。 我以爲MySQL無法立即得到結果,因爲MySQL管理員在等待結果時顯示爲sending data
或copying to tmp table
。
但是,當我從另一個應用程序,如phpMyAdmin或jmater發送相同的SELECT語句,它需要2秒或更少的10倍!
有人知道MySQL的性能如此不同嗎?
有人知道MySQL的性能差異嗎?
因爲MySQL caches query結果,與操作系統緩存的磁盤I /(該進程在Linux中的描述see this link)
像@symcbeanØ已經說過,PHP的MySQL驅動程序緩存查詢結果。這也是爲什麼你可以在while($row=mysql_fetch_array())
循環中做另一個mysql_query()
。
MySql Administrator或phpMyAdmin顯示結果如此之快的原因是他們在您的背後附加了一個LIMIT 10
。
如果你想讓你的查詢結果更快,我可以提供一些提示。它們涉及只選擇你需要什麼,當你需要:
select *
無處不在。這可能會在稍後想要另一列時咬你,但忘記將它添加到select
語句中,因此需要時(如100列或100萬行的表)。while()
循環中的其他詳細信息。這可能看起來不合邏輯,因爲你做了更多的查詢,但是當你處理涉及大約10個表,數百個併發用戶,鎖和查詢緩存的查詢時,事情並不總是有道理:)這些是我從我的老闆和我的經驗中學到的一些提示。一如既往,YMMV。
向我們顯示查詢,如果您可以在mysql控制檯中顯示'EXPLAIN'的輸出,它也會有所幫助。 –
Martin
什麼是查詢,表格模式和表格中有多少行? – GordonM
一些*神祕*查詢(和或代碼)很慢,您認爲我們可以幫助您嗎? – 2012-08-28 09:06:45