Don't force it into RAM; let it use disk as needed. Do you have it in a table? Or only in XML?
There is probably a single
LOAD DATA statement to convert that from XML to a table defined thus:
CREATE TABLE Operations (
id INT NOT NULL AUTO_INCREMENT,
cid TINYINT UNSIGNED NOT NULL,
aid TINYINT UNSIGNED NOT NULL,
The table will probably be smaller than your 300MB. Let it spill to disk if it needs to. (You have very little control anyway.) How big can the ids be? I picked the smallest datatype, but that assumes the numbers are between 0 and 255. Pick a larger datatype if needed.
SELECT COUNT(DISTINCT cid, aid)
That seems to be "number of nodes with distinct value on attributes cId and aId", but it looks like the answer will be 2, namely [2,5] and [2,6]. If
Info_id is relevant to the counting, please explain how. (That may necessitate including it in the
If you are exporting data from a spreadsheet,... Well, I see XML as an awful way to do it. Using a CSV file is easier and faster as an RDBMS-friendly format. After that, 3 SQL statements achieve the goal: CREATE TABLE, LOAD DATA, SELECT.