The key to efficiently scale lots of features for a large KML file is using NetworkLinks and Regions with a collection of smaller KML files. Depth of nesting depends on the number of the features.
You're not likely going to be able to display half-million placemarks at once in Google Earth without restructuring the KML. You can break up the data into segments and display a subset at a time. Something more advanced would be to create heat-map like super-features that represent 100's or 1000's of nearby points with a given color for the number of points in a given area. Zooming into a given area could load the "raw" points for that region using combination of NetworkLinks and Regions.
Here is a discussion showing problems with KML in Google Earth when there is large # of features in a KML file where they all get loaded at once.
You probably need to parse the KML file or better yet to use the raw data to regenerate a series of new KML files with an appropriate grouping of the data.
The data is time based so if the data has a relatively normal distribution of "points" per interval of time then you can simply break the KML files into groups based on time intervals such that 10-50K places get added to each KML file. If the data covers a large geographic area then you can break the data into regions as regularly-spaced cells in a grid and/or also with time.
The master root KML file would have a series of NetworkLinks and reference each of the sub-files. To prevent Google Earth from loading all files at once you need to set the TimeSpan on each NetworkLink as well as a smaller initial interval on the outer-most Document in the root KML file.
The root KML would look something like this:
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Parent Document</name>
<open>1</open>
<!-- use interval for first time span as initial period to load -->
<TimeSpan>
<begin>2012-08-12T01:00:00Z</begin>
<end>2012-08-12T01:59:59Z</end>
</TimeSpan>
<NetworkLink>
<name>Group #1</name>
<TimeSpan>
<begin>2012-08-12T01:00:00Z</begin>
<end>2012-08-12T01:59:59Z</end>
</TimeSpan>
<Link>
<href>group_0100.kml</href>
</Link>
</NetworkLink>
<NetworkLink>
<name>Group #2</name>
<TimeSpan>
<begin>2012-08-12T02:00:00Z</begin>
<end>2012-08-12T02:59:59Z</end>
</TimeSpan>
<Link>
<href>group_0200.kml</href>
</Link>
</NetworkLink>
...
</Document>
</kml>
For consistency the group kml files should have the same time span matching the span as defined in the NetworkLink in the parent KML file.
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Group #1</name>
<TimeSpan>
<begin>2012-08-12T01:00:00Z</begin>
<end>2012-08-12T01:59:59Z</end>
</TimeSpan>
<Placemark>
<TimeStamp>
<when>2012-08-12T01:00:00Z</begin>
</TimeStamp>
</Placemark>
...
</Document>
</kml>