Hi all, I was hoping this was the right place for a question about the C API. I've been grabbing result sets from tables in the C API for a few years now, but I'm starting to work with result sets that are big enough to bog me down. Of course, the result sets aren't insanely big, so I was wondering why it was taking so long for me to suck them in to C, especially when I can run the same query from the command line using the binaries and they can cache it to a file on the hard disk pretty much instantly. So, basically, I was just hoping that I've been doing something wrong, or at least that there was something I could do better, to make my database communication as fast as the mysql command line tools. I've checked out their source and nothing obvious jumps out at me. Here's a non-functional sample of my code:
int main(int argc, char *argv[] ) { int uid; int sid; char sqlBuff[4000]; int err = 0; int i; // Setup the database communications space: MYSQL dbase; MYSQL_RES *result; MYSQL_ROW row; float **genAttrib; //... snip ... // Connect to the database: if (mysql_init(&dbase) == NULL) err = 1; else { if(mysql_real_connect(&dbase,"localhost","login","pass","test",0,NULL,CL IENT_FOUND_ROWS) == NULL) { err = 1; fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&dbase)); } } // If the connection couldn't be established: if(err) { printf("db connection failed!\n"); exit(1); } //... snip ... // This query could have as many as a million rows returned, but the query itself runs quite fast. It seems to just be // sucking it into C that can take up to four seconds on our dual Xeon server. sprintf(sqlBuff,"SELECT A.* FROM `attribs` as A, login AS L WHERE A.guid=L.guid AND L.isActive=1 AND L.sid=%d AND A.guid!=%d",sid,uid); if (mysql_real_query(&dbase,sqlBuff,strlen(sqlBuff))) { printf("Pool Attributes Select Failed... dumbass\n"); fprintf(stderr, "Error: %s\n", mysql_error(&dbase)); exit(1); } result = mysql_store_result(&dbase); numRows=mysql_num_rows(result); for (i=0;i<numRows;i++) { row = mysql_fetch_row(result); tempq=atoi(row[1]); tempP=atoi(row[0]); genAttrib[tempP][tempq]=atoi(row[2]); } return 0; } So, if someone sees something that I could change to speed things up, or I should direct this question elsewhere... thanks for your help and thanks for reading this far! Thanks again, Matt -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]