J'ai une énorme base de données d'entreprises (environ 500 000) avec code postal, adresse, etc. J'ai besoin de les afficher par ordre croissant de 100 miles sont des utilisateurs de code postal. J'ai une table pour les codes postaux avec latitude et longitude. Quelle sera la solution la plus rapide/meilleure?Calcul de distance avec énorme base de données SQL Server
Cas 1: pour calculer la distance et trier par distance. Je vais avoir les utilisateurs code postal actuel, la latitude et la longitude en session. Je vais calculer la distance en utilisant une fonction SQL Server. Cas n ° 2: pour obtenir tous les codes postaux dans la zone de 50 miles et obtenir des entreprises avec tous ces codes postaux. Ici, je vais devoir écrire une sélection dans une requête imbriquée tout en trouvant des entreprises.
Je pense que le cas 1 va calculer la distance pour toutes les entreprises dans la base de données. Alors que le deuxième cas ira chercher les codes postaux et finira par aller chercher seulement les entreprises requises. Par conséquent, le cas 2 devrait être meilleur? J'apprécierais toute suggestion ici.
est ici question LINQ je pour le cas 1.
var businessListQuery = (from b in _DB.Businesses
let distance = _DB.CalculateDistance(b.Zipcode,userLattitude,userLogntitude)
where b.BusinessCategories.Any(bc => bc.SubCategoryId == subCategoryId)
&& distance < 100
orderby distance
select new BusinessDetails(b, distance.ToString()));
int totalRecords = businessListQuery.Count();
var ret = businessListQuery.ToList().Skip(startRow).Take(pageSize).ToList();
sur une application de la note de côté est en C#.
Merci
Écrivez le sql et exécutez les plans et les statistiques d'exécution et voyez ce qui est plus rapide. Si la performance est un problème, écrivez une procédure stockée et faites-le dans la base de données et comparez-la également. –
Créez l'index et utilisez Zipcode dans votre indexation, il vous donnera un résultat plus rapide de cette façon ou peut changer votre base d'index sur votre recherche et votre commande. – KuldipMCA
méthode simple et très rapide http://stackoverflow.com/questions/3983325/calculate-distance-entre-zip-codes-and-users/3989830#3989830 –