Hangi iki URL'ler karşılaştırmak için en iyi ve en hızlı yolu nedir?

3 Cevap php

Farklı kaynaklardan getirilen URL'ler listesi ile iki tablo var.

Ben ortak girişleri bulur ve ayrı bir tabloda onları koymak istiyorum.

Bu ben ne yapıyorum:

  1. Onları alınırken url md5 hash bulabilirsiniz.
  2. Bir sütunda saklayın.
  3. Ben, bir dizi gibi bir tablo alıp bunun üzerinden bir döngü çalıştırın ve md5 hash aynı olduğu diğer tablodan değerleri girin.

EDIT: Ben "http:// 've' www adresler şerit olmalı '.

Ben yukarıda gerçekleştirebilirsiniz hangi kullanarak, daha iyi ve daha hızlı olan başka bir yöntem, bilmek istiyorum.

Ben PHP kullanarak MySQL + am

3 Cevap

Eğer gerçek hız gerekiyorsa MD5 biraz yavaş. Try MurmurHash

Hash hesaplama önce aşağıdaki değişiklikleri yapmanız gerekir:

  • Strip "http://" ve www.
  • Şerit eğik çizgi
  • URL normalleştirmek (urlencode bunu)

Böyle bir şey deneyin:

INSERT INTO table3  (SELECT url FROM table1, table2 WHERE table1.hash = table2.hash)

Bu, geçerli bir SQL ifadesi değil, ama böyle bir iç içe sorgu kendi karma tarafından maç tablo1 ve tablo2 adresler okumak ve Çizelge 3'te onları koymak gerekir.

EDIT: If you want to sanitize your input urls (e.g. removing GET-variables), I'd do that before saving them to tabel1 and table2. I wouldn't remove http and www as "https://somesite" and "http://somesite" as well as "www.somesite.com" and "somesite.com" may have different content.

SELECT * FROM table1 WHERE hash IN (SELECT hash FROM table2)

Muhtemelen de tablo katıldı kavramına bir göz atmak isteyebilirsiniz.