| 
        m_stInsertParam->internalPort = iport;        //执行statement,性能瓶颈处        if(mysql_stmt_execute(m_stInsertStmt))               return false;        return true; }   l         随机的获取记录 在某些数据库的应用中, 我们并不是要获取所有的满足条件的记录,而只是要随机挑选出满足条件的记录. 这种情况常见于数据业务的统计分析,从大容量数据库中获取小量的数据的场合.       有两种方法可以做到 1.       常规方法,首先查询出所有满足条件的记录,然后随机的挑选出部分记录.这种方法在满足条件的记录数很多时效果不理想. 2.       使用limit语法,先获取满足条件的记录条数, 然后在sql查询语句中加入limit来限制只查询满足要求的一段记录. 这种方法虽然要查询两次,但是在数据量大时反而比较高效. 示例代码如下:   //1.常规的方法 //性能瓶颈,10万条记录时,执行查询140ms, 获取结果集500ms,其余可忽略 int CDBManager::QueryHostCache(MYSQL* connecthandle, char * channelid, int ISPtype, CDBManager::CHostCacheTable * &hostcache) {             char selectSQL[SQL_LENGTH];        memset(selectSQL, 0, sizeof(selectSQL));        sprintf(selectSQL,"select * from HostCache where ChannelID = '%s' and ISPtype = %d", channelid, ISPtype);        if(mysql_real_query(connecthandle, selectSQL, strlen(selectSQL)) != 0)   //检索               return 0;        //获取结果集        m_pResultSet = mysql_store_result(connecthandle);        if(!m_pResultSet)   //获取结果集出错               return 0;        int iAllNumRows = (int)(mysql_num_rows(m_pResultSet));      ///<所有的搜索结果数        //计算待返回的结果数        int iReturnNumRows = (iAllNumRows <= RETURN_QUERY_HOST_NUM)? iAllNumRows:RETURN_QUERY_HOST_NUM;        if(iReturnNumRows <= RETURN_QUERY_HOST_NUM)        {               //获取逐条记录               for(int i = 0; i<iReturnNumRows; i++)               {                      //获取逐个字段                      m_Row = mysql_fetch_row(m_pResultSet);
 |