At 09:21 AM 3/4/2007, Jonathan Trahair wrote:
Hi Everyone.

I have just upgraded a Visual Basic 6 project which used an Access database as a data back end, using DAO and SQL strings. The Access database was exceedingly slow, and prone to glitches. I have changed the VB code to ADO, and set up a MySQL database in the hope that the MySQL database would be better suited to the large size of some tables, and would therefore return queries more quickly. It is now populated with the data from the old Access tables.

So far, the MySQL speed has been very slow. I'm talking about 30 seconds to return the 2 records found by SELECT * FROM OrderItems WHERE CustomerCode = 'ABE001' AND InvoiceNo = 0 ORDER BY OrderNumber, ProductCode, Colour, RecNo from the OrderItems table - 309,000 rows (ie. records). And this is in the MySQL Query Browser, not the VB code.

Database information: all 23 tables use the InnoDB, 2 tables have more than 276,000 records, most have a lot less. Uses ODBC.

My questions are:
1. Have I chosen the right database? What databases do people use which return data from huge tables in micro-seconds (well, alright, seconds, then!)?
2. Should I set up the database in a different way, if so, how?
3. Is this the right list for such questions?

Thanks in advance.

Jonathan Trahair

Jonathan,
If you are going to use CustomerCode and InvoiceNo to retrieve the rows, then create a compound index with CustomerCode and InvoiceNo in that one index. Why did you choose InnoDb instead of MyISAM? Do you need RI or are there a lot of people updating the table at the same time? If not, MyISAM might be a better choice because it's faster.

Mike
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to