SQL inner join extremely slow, how can I speed it up?

I am trying to execute a specific SQL INNER JOIN statement on a table I have a collection of phone numbers in and it has over 300,000 records so it's very very slow, and also holds up the other software running that needs access to the Phone table, e.g. maintenance tasks or whatever

SELECT A.PhoneID as aPhoneID, B.PhoneID as bPhoneID 
FROM T_Phone A 
ON A.Phone = B.Phone AND A.PhoneID < B.PhoneID 

This statement alone takes about 45 seconds to execute for a limit of 10. All it is doing is checking for duplicate phone numbers and storing the IDs of such numbers. Is there any way to speed this up? Do it more efficiently?

A similar issue occurs with a delete statement to get rid of the duplicates in a join table I have.

DELETE t1 FROM T_JoinPeopleIDPhoneID t1 
INNER JOIN T_JoinPeopleIDPhoneID t2 
WHERE t1.PeoplePhoneID > t2.PeoplePhoneID 
AND t1.PeopleID = t2.PeopleID 
AND t1.PhoneID = t2.PhoneID 

Any help would be greatly appreciated. My last resort solution is to basically write the code to do the query's job programmatically. I'm not confident in the performance of that so I would really like to get this figured out and at least usable.