The data module should have indexes added to {$CFG->prefix}data_content for the following fields: 'fieldid', 'recordid', and 'content' with an appropriate size(10?) also 'recordid, fieldid'
Also, the row retrieval method should be reviewed and something like the following should be considered to retrieve a record in one query rather than X queries where X represents the number of fields in the database; the current method is rather slow for databases with a large number of fields.
select r.id, f12.content as Category,
f13.content as Company,
f14.content as Position,
f15.content as Contact,
f24.content as Phone,
f25.content as Cell,
f26.content as Fax,
f27.content as Address,
f28.content as City,
f30.content as Zip,
f31.content as Website,
f32.content as Email
FROM
mdl_data_records r
LEFT JOIN mdl_data_content f12 ON f12.recordid=r.id AND f12.fieldid=12
LEFT JOIN mdl_data_content f13 ON f13.recordid=r.id AND f13.fieldid = 13
LEFT JOIN mdl_data_content f14 ON f14.recordid=r.id AND f14.fieldid = 14
LEFT JOIN mdl_data_content f15 ON f15.recordid=r.id AND f15.fieldid = 15
LEFT JOIN mdl_data_content f24 ON f24.recordid=r.id AND f24.fieldid = 24
LEFT JOIN mdl_data_content f25 ON f25.recordid=r.id AND f25.fieldid = 25
LEFT JOIN mdl_data_content f26 ON f26.recordid=r.id AND f26.fieldid = 26
LEFT JOIN mdl_data_content f27 ON f27.recordid=r.id AND f27.fieldid = 27
LEFT JOIN mdl_data_content f28 ON f28.recordid=r.id AND f28.fieldid = 28
LEFT JOIN mdl_data_content f30 ON f30.recordid=r.id AND f30.fieldid = 30
LEFT JOIN mdl_data_content f31 ON f31.recordid=r.id AND f31.fieldid = 31
LEFT JOIN mdl_data_content f32 ON f32.recordid=r.id AND f32.fieldid = 32;
Please note that this small example to illustrate the idea. By adding the indexes mentioned above this query should be quick. This could also be considered to handle returning all of the results using "r.id IN (192,193,194)" where the values in parenthesis are obtained via the patch provided.
This suggested change combined with my latest patch in this thread should offer much improved speed by minimizing result sets, and the number of database queries necessary.
The code could also potentially

be simplified by returning the whole result set via the above SQL and using the standard API for tables to handle paging etc.
Could whomever is maintaining the data module please consider and post any implications that I may have missed in making these modifications.