2011-m1s2-ter/code/serveur/select/02.neighbors
2011-01-20 00:27:32 +01:00

28 lines
1.4 KiB
Plaintext

// BEAUCOUP plus rapide avec un index
create index i_relation_start on relation(start);
create index i_relation_end on relation(end);
create index i_relation_type on relation(type);
// Pour les voisins reliés par un end avec filtrage des types
create index i_relation_end_type on relation(end,type);
// select relations partant d'un noeud
select * from relation where start = 42;
// select cibles de relations partant d'un noeud
select end from relation where start = 42;
// Deux sauts
select * from relation where start in (select end from relation where start = 42);
// Mots qui ont des voisins en commun avec 42 (42->123, 314->123 : on prend 314)
// Renvoie beaucoup trop de résultats à cause de certains types, il faut donc les exclure.
select * from relation where end in (select end from relation where start = 42) and type not in (4, 12, 36, 18, 29, 45, 46, 47, 48, 1000, 1001);
// types de relation à éviter :
4 12 36 18 29 45 46 47 48 1000 1001
// Liste des types de relation par ordre de plus gros nombre d'arcs entrants de ce type sur n'importe quel noeud :
select count(end) as c, type, end from relation group by end order by c desc limit 50;
+ pas mal de manips pour avoir un distinct qui garde l'ordre :(
4 12 666 41 36 18 3 0 6 42 5 15 9 14 28 32 10 17 35 16 23 8 13 34 52 7 50 37 22 49 30 25 31 51 54 20 24 38 39 40 43 21 1 44 19 55 33 11 46 999 27 26 45 48 29 2