Als erstes gefällt mit der Vorschlag von mihe7 sehr gut, denn der sollte so bei zumindest den meisten Datenbanken direkt funktionieren. Daher würde ich zu der Lösung raten!
Ich hatte aber MySQL spezifische Möglichkeiten angesprochen (Evtl. aufpassen, dass Du eine aktuelle mysql Version hast!):
INSERT IGNORE. Setzt ein unique key auf HostName voraus (So da jeder HostName nur einmal vorkommen soll, so sollte der auf jeden Fall gesetzt sein!) Dokumentation dazu wäre z.B.: http://www.mysqltutorial.org/mysql-insert-ignore/
Unter dem Strich ist es wie ein normales INSERT nur eben durch das IGNORE wird ein Fehler beim Uniqe Key nicht als Fehler behandelt sondern ignoriert. (Und die Datenbank dürfte da auch etwas optimieren hoffe ich...)
Interessant sind dann aber auch die Konstrukte (die Du aber hier nicht brauchst, da Du nur ein Insert machen willst und kein Update):
INSERT INTO ..... ON DUPLICATE KEY UPDATE .... ; http://www.mysqltutorial.org/mysql-insert-or-update-on-duplicate-key-update/
==> Dies ist ein zusammengefasstes INSERT und UPDATE statement. Da muss man dann nicht erst prüfen und dann entweder oder machen sondern hat einen kompakten Befehl.
REPLACE INTO ... http://www.mysqltutorial.org/mysql-replace.aspx
Dies ist prinzipiell ähnlich wie der INSERT ...ON DUPLICATE KEY ...
Ich selbst kenne diese Konstrukte, aber ich selbst vermeide diese so gut es geht, da es zusätzliche Abhängigkeiten schafft und eine Portierung erschwert.