Note that whether you have CASCADE or not is not the issue --- if you are doing a delete in a foreign-key-referenced relation at all, you are going to have a trigger event per deleted row no matter what the details of the FK are.
So the best/fastest* way to do this would be to remove the FK relationship from the tables, delete all my rows with DELETE ... WHERE ip IN (SELECT ...) in the previously FK-ed tables, delete all the rows in the PK table, then recreate the FK relationships? I tried this and it was pretty snappy, assuming that all the indexes are built. *note: loading/creating a datawarehouse, guaranteed exclusive access. Current DW size is about 10 GB.