환경 : WinXPSP2, MySQL5.0.18, MySQLODBC3.51Driver 테이블은 MyISAM 엔진을 사용합니다. Access2003
다른 장소 :
1. 데이터를 삽입 할 때 MySQL은 rs.addnew 사용을 피하기 위해 Insertinto 문을 사용해야합니다. 사용하려면 Conn.CursOrlocation = 3을 먼저 설정해야합니다. 그렇지 않으면 오류가 확실히보고됩니다. Insert를 사용하는 것이 New를 추가하는 것보다 약 3 배 빠른 것으로 나타났습니다. 또한 업데이트 할 때 Rs.AddNew를 사용하는 경우 Access에서 RS ( "ID")의 값을 즉시 얻을 수 없습니다.
2. 액세스와 비교 :
동일한 테이블 구조의 경우 20,000 개의 데이터를 삽입 할 때 MySQL이 7.5 초 동안 용해되었으며 Rs.AddNew를 사용하면 24 초가 소요됩니다! 액세스하면 삽입으로 19.8 초 동안 변환되었지만 Rs.Addnew는 2.8 초 동안 만 변환되었습니다!
쿼리 비교 : 액세스 쿼리 40W 조각은 12 초 동안 디지털화되었으며 MySQL은 14 초로 조금 느 렸습니다.
요약 : 일반적으로 삽입 속도는 MySQL보다 약 3 배 빠릅니다. 데이터를 쿼리 할 때 데이터 볼륨이 비교적 작 으면 액세스가 MySQL보다 약 2 배 빠릅니다. 그러나 데이터 볼륨이 크면 MySQL의 쿼리 속도는 크게 변경되지 않지만 액세스는 크게 감소합니다.
물론 MySQL은 액세스보다 빠릅니다. 문제는 ODBC 드라이버에 있고 액세스 드라이버는 OLE을 사용합니다. Microsoft는이를 위해 많은 최적화를 만들었 으므로이 테스트에서 MySQL이 잘못되었습니다! 동시성 성능에 관해서는 테스트하지 않았지만 액세스가 MySQL보다 훨씬 나빠질 것이라고 생각합니다.
사용하려면
Rs.PageCount
Rs.Pagesize
Rs.Absolutepage
Rs.RecordCount
그러한 속성의 경우 먼저 Conn.CursOrlocation = 3입니다
그렇지 않으면 위의 모든 속성을 사용할 수 없습니다.
또한, 차량 코드를 방지하고 중국 오류를 삽입하려면 conn.open 바로 뒤에 있어야합니다 : conn.execute ( "setnames'gb2312 '").
그렇지 않으면, 삽입에 오류가 확실히있을 것이며, 차량 코드는 협상되지 않습니다.
연결 방법 :
'시스템 DNS와 연결 :
strconnection = "dsn = mysql; 옵션 = 16384; driver = {mysqlodbc3.51driver}; server = 127.0.0.1; uid = root; pwd = 67918; database = test"
'문자열과 직접 연결 :
'strConnection = "driver = {mysqlodbc3.51driver}; server = localhost; port = 3306; 옵션 = 0; socket =; stmt =; database = test; uid = root; pwd = 67918; 옵션 = 16384"
setconn = server.createobject ( "adodb.connection")
conn.cursorlocation = 3
Conn.openStrConnection