環境:winxpsp2,mysql5.0.18,mysqlodbc3.51driver表採用myisam引擎。 access2003
不同的地方:
1、插入數據時候,mysql應盡量使用insertinto語句,避免使用rs.addnew,如果非的要用,應先設置conn.CursorLocation=3否則,肯定報錯,而且我發現,用insert要比addnew快大約3倍。還有,如果用rs.addnew當你rs.update時候,是無法想在access中立即獲得rs(“id”)的值的。
2、和access的比較:
同樣的表結構,用insert插入20000條數據時候,mysql化了7.5秒,如果用rs.addnew則要24秒!而在access,用insert則化了化了19.8秒,rs.addnew卻只有化了2.8秒!
查詢比較:access查詢40w條數據化了12秒,mysql化了14秒,稍微慢點。
總結:總的來講,access的插入速度要比mysql快大約三倍。查詢數據時候,如果數據量比較小,access也要比mysql快大約2倍,但當數據量很大時,mysql的查詢速度變化不大,但access則下降的比較厲害。
當然,mysql應該要比access快的,我估計問題出在他的odbc驅動上,而access的驅動是用的ole,微軟對他作了很多優化,所以,在這個測試中,mysql蒙冤受屈了!至於並發性能,我沒有測試,不過我想access應該大大不如mysql吧。
如果要使用
rs.pagecount
rs.pagesize
rs.AbsolutePage
rs.recordcount
這樣的屬性,你必須先conn.CursorLocation=3
否則以上屬性統統不能使用。
還有為了防止亂碼和插入中文錯誤,你必須在conn.open後,立即:conn.Execute("SETNAMES'gb2312'")
否則,肯定插入錯誤,而且亂碼沒商量。
連接方式:
'用系統DNS連接:
strconnection="dsn=mysql;OPTION=16384;driver={mysqlodbc3.51driver};server=127.0.0.1;uid=root;pwd=67918;database=test"
'直接用字符串連接:
'strconnection="Driver={mysqlodbc3.51driver};Server=localhost;Port=3306;Option=0;Socket=;Stmt=;Database=test;Uid=root;Pwd=67918;Option=16384"
setconn=server.createobject("adodb.connection")
conn.CursorLocation=3
conn.openstrconnection