Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1105 connectés 

 


Débat n°1




Attention si vous cliquez sur "voir les résultats" vous ne pourrez plus voter

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  20  21  22  23  24  25
Auteur Sujet :

BlaBla@SQL

n°2318073
Anonymouse
Posté le 17-07-2018 à 00:37:19  profilanswer
 

Reprise du message précédent :

skeye a écrit :

Le SQL/BDD pur ça n'existe pas / ça ne te donnera pas une application complète tout seul...c'est une couche d'accès aux données, il te faudra au moins apprendra un langage qui te permettra de réaliser une interface utilisateur. Et apprendre comment concevoir ta base de données, pour commencer.


 
J'ai un vague souvenir d'un lange oracle basé sur le SQL qui permettait de réaliser une interface utilisateur en mode roots. (Affichage de popups pour saisies de critères de restrictions) et affichage des résultats dans un tableau. Par contre le truc était clairement pas du tout user friendly. Je pense que les gens manipulaient peut être les données comme ça au tout début de l’informatique.
 
Sinon le mieux est de te faire aider pour la partie modélisation/respect des formes normales/création du schéma de BDD pour se concentrer sur la partie requêtes.
 
 
 
 
 

mood
Publicité
Posté le 17-07-2018 à 00:37:19  profilanswer
 

n°2318075
skeye
Posté le 17-07-2018 à 06:59:17  profilanswer
 

Anonymouse a écrit :

 

J'ai un vague souvenir d'un lange oracle basé sur le SQL qui permettait de réaliser une interface utilisateur en mode roots. (Affichage de popups pour saisies de critères de restrictions) et affichage des résultats dans un tableau. Par contre le truc était clairement pas du tout user friendly. Je pense que les gens manipulaient peut être les données comme ça au tout début de l’informatique.


forms/reports. Fin de support d'ici 5 ans.


Message édité par skeye le 17-07-2018 à 06:59:36

---------------
Can't buy what I want because it's free -
n°2318857
Kilyn
Milé sek milé
Posté le 08-08-2018 à 18:32:00  profilanswer
 

Question bête : quel que soit le langage de programmation, quand on appelle une procédure stockée SQL Server on s’attend à ce qu’elle est en paramètre les données en sortie ? À mon taf on me dit de coder l’appel à la procédure stockée qu’un responsable a fait puis de coder les accès aux tables temporaires créées par cette procédure. C’est pourri non ? [:transparency]


---------------
Nous ne sommes pas des êtres humains vivant une exprérience spirituelle. Nous sommes des êtres spirituels vivant une expérience humaine.
n°2318860
flo850
moi je
Posté le 08-08-2018 à 18:40:09  profilanswer
 

ben ça dépend si tu compte réutiliser les résultats plusieurs fois ET que le calcul est super gourmand


---------------

n°2318861
Kilyn
Milé sek milé
Posté le 08-08-2018 à 18:42:09  profilanswer
 

Le résultat ne sera utilisé qu’une fois. Ce ne sont que des requêtes de sélection.


---------------
Nous ne sommes pas des êtres humains vivant une exprérience spirituelle. Nous sommes des êtres spirituels vivant une expérience humaine.
n°2319532
dj smelz
Posté le 28-08-2018 à 03:11:20  profilanswer
 

drap

n°2319646
Twiddy
Posté le 28-08-2018 à 18:35:12  profilanswer
 

Kilyn a écrit :

Question bête : quel que soit le langage de programmation, quand on appelle une procédure stockée SQL Server on s’attend à ce qu’elle est en paramètre les données en sortie ? À mon taf on me dit de coder l’appel à la procédure stockée qu’un responsable a fait puis de coder les accès aux tables temporaires créées par cette procédure. C’est pourri non ? [:transparency]


Ce qui est pourri c'est qu'en général les tables temporaires ont une portée limitée à la procédure et si la procédure renvoie des résultats, ce n'est pas évident de les réutiliser proprement.
Enfin bon, sans le contexte ni le contenu difficile de savoir ce qu'il est mieux/possible de faire.

n°2319653
nordine787
Merces Letifer
Posté le 28-08-2018 à 20:27:49  profilanswer
 

Drap

n°2319683
eclaireur
Posté le 29-08-2018 à 09:14:15  profilanswer
 

Twiddy a écrit :


Ce qui est pourri c'est qu'en général les tables temporaires ont une portée limitée à la procédure et si la procédure renvoie des résultats, ce n'est pas évident de les réutiliser proprement.
Enfin bon, sans le contexte ni le contenu difficile de savoir ce qu'il est mieux/possible de faire.


 
Table temporaire globale, ou alors table partitionnée si gros volume de données sinon :o

n°2319878
Kilyn
Milé sek milé
Posté le 30-08-2018 à 20:36:12  profilanswer
 

Merci pour les informations complémentaires. Finalement la procédure stockée a été modifiée pour renvoyer des données en sortie. J’ai été écoutée.


---------------
Nous ne sommes pas des êtres humains vivant une exprérience spirituelle. Nous sommes des êtres spirituels vivant une expérience humaine.
mood
Publicité
Posté le 30-08-2018 à 20:36:12  profilanswer
 

n°2322774
cordelius
Disciplus Simplex
Posté le 21-10-2018 à 20:59:18  profilanswer
 

Petit drapal. Apparemment personne n'utilise DB2 sur HFR  [:penis_de_castor:3]


---------------
"On est en 2032, ça donne 2-0-3-2, c'est le 21ème siècle quoi. Et j'ai le regret de vous annoncer que le monde est maintenant peuplé de couilles molles, c'est un remake de la petite maison dans la prairie joué par une bande de pédales en robe longue"
n°2322793
Kilyn
Milé sek milé
Posté le 22-10-2018 à 06:21:06  profilanswer
 

Ah IBM et Cobol ? J’ai utilisé DB2 par le passé et j’y retourne dès le moins prochain.


---------------
Nous ne sommes pas des êtres humains vivant une exprérience spirituelle. Nous sommes des êtres spirituels vivant une expérience humaine.
n°2322795
eclaireur
Posté le 22-10-2018 à 08:01:24  profilanswer
 

cordelius a écrit :

Petit drapal. Apparemment personne n'utilise DB2 sur HFR  [:penis_de_castor:3]


 
Si, moi :o

n°2322848
cordelius
Disciplus Simplex
Posté le 22-10-2018 à 19:41:34  profilanswer
 

Kilyn a écrit :

Ah IBM et Cobol ? J’ai utilisé DB2 par le passé et j’y retourne dès le moins prochain.


DB2 LUW :D


---------------
"On est en 2032, ça donne 2-0-3-2, c'est le 21ème siècle quoi. Et j'ai le regret de vous annoncer que le monde est maintenant peuplé de couilles molles, c'est un remake de la petite maison dans la prairie joué par une bande de pédales en robe longue"
n°2324943
poulpeleac​h
Octopus paradisi
Posté le 28-11-2018 à 19:12:18  profilanswer
 

Edit: erreur de topic


Message édité par poulpeleach le 28-11-2018 à 21:26:06

---------------
Les lacets le gravier et dans l'air du soir , la Chrysler s'envole dans les fougères et les nénuphars
n°2327039
Profil sup​primé
Posté le 02-01-2019 à 20:48:19  answer
 

Pourquoi on ne peut pas exploiter un alias dans son select sur oracle?

Message cité 2 fois
Message édité par Profil supprimé le 02-01-2019 à 20:48:29
n°2327051
skeye
Posté le 02-01-2019 à 23:21:01  profilanswer
 


hein?


---------------
Can't buy what I want because it's free -
n°2327052
eclaireur
Posté le 03-01-2019 à 00:15:26  profilanswer
 


 
 
C’est dans la norme SQL, donc si

n°2327057
Profil sup​primé
Posté le 03-01-2019 à 07:28:45  answer
 

ok, merci. Si dans mon select j'utilise des fonctions genre " to_char", je mets quoi dans le GROUP BY?
 
SELECT to_char(date,'YYYY') AS Year, sum(chiffre_d_affaire) AS CA
FROM toto

n°2327060
eclaireur
Posté le 03-01-2019 à 08:40:42  profilanswer
 

SELECT to_char(date,'YYYY') AS Year, sum(chiffre_d_affaire) AS CA
FROM toto  
GROUP BY to_char(date,'YYYY')  
 
 
?

n°2334990
masklinn
í dag viðrar vel til loftárása
Posté le 12-06-2019 à 16:12:47  profilanswer
 

J'ai une FK, si la FK n'a jamais été configurée ou a été déconfigurée je veux un fallback, mais si elle a été configurée à un truc vide je veux un résultat vide. Sous postgres.
 
Ya pas d'autre moyen que d'ajouter un flag à côté?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2334994
skeye
Posté le 12-06-2019 à 16:26:40  profilanswer
 

masklinn a écrit :

Ya pas d'autre moyen que d'ajouter un flag à côté?


Pour différencier null de null?  A priori non.:o


---------------
Can't buy what I want because it's free -
n°2334995
masklinn
í dag viðrar vel til loftárása
Posté le 12-06-2019 à 16:29:40  profilanswer
 

skeye a écrit :


Pour différencier null de null?  A priori non.:o


SQL s'vraiment de la merde, en Haskell tu peux différentier Nothing de Just Nothing [:sadnoir]

 

J'ai plus qu'à chercher comment fonctionnent les triggers qui implémentent les FK dans posgres :/

Message cité 1 fois
Message édité par masklinn le 12-06-2019 à 16:30:58

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2334997
skeye
Posté le 12-06-2019 à 16:52:05  profilanswer
 

masklinn a écrit :


SQL s'vraiment de la merde, en Haskell tu peux différentier Nothing de Just Nothing [:sadnoir]
 
J'ai plus qu'à chercher comment fonctionnent les triggers qui implémentent les FK dans posgres :/


 
En même temps, vu d'ici, si un champ vide peut avoir plusieurs significations métier il est probablement logique qu'il y ait deux champs, en fait.:o
 
C'est quoi le contexte, j'ai du mal à voir l'objectif.


---------------
Can't buy what I want because it's free -
n°2334998
eclaireur
Posté le 12-06-2019 à 17:19:29  profilanswer
 

Pareil, je comprends pas trop l'énnoncé :o
 
Et NULL n'est pas égal à "rien", c'est NULL quoi :o

n°2334999
masklinn
í dag viðrar vel til loftárása
Posté le 12-06-2019 à 17:34:53  profilanswer
 

skeye a écrit :

En même temps, vu d'ici, si un champ vide peut avoir plusieurs significations métier il est probablement logique qu'il y ait deux champs, en fait.:o

 

C'est quoi le contexte, j'ai du mal à voir l'objectif.


J'ai besoin de fallbacks sur un record, yay coalesce, sauf que le fallback doit pas avoir lieu quand le champ a été explicitement "vidé", uniquement quand il n'a jamais été setté, ou qu'il a été "unsetté" (dans la couche métier c'est une opération différente de vider, cf mettre une valeur à null dans une hashmap vs enlever la clé).

 

En gros j'essaie de convertir un gros modèle EAV en des tables adjacentes (mieux structurées, mieux typées et possibles à contraindre proprement), mais les règles de fallback sont pas optionnelle.

eclaireur a écrit :

Pareil, je comprends pas trop l'énnoncé :o

 

Et NULL n'est pas égal à "rien", c'est NULL quoi :o


Le SQL mixe "vide" et "inconnu", NULL remplit les deux rôles [:skeye]

 

D'ailleurs Codd avait suggéré une 4VL différentiant "pas de valeur, applicable" (vide) et "pas de valeur, inapplicable" (inconnu).


Message édité par masklinn le 12-06-2019 à 17:40:01

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2336500
Profil sup​primé
Posté le 06-07-2019 à 23:43:30  answer
 

Bonjour à tous,  
 
Je suis en train de me lancer dans l'aventure SQL + asp core et je suis en train de créer une application de formation pour m’entraîner. Sauf que je ne suis pas sur de partir sur la bonne voie !
 
https://reho.st/preview/self/0a66f3252d0f01b014c8d3ce3a8d6249c9b91db4.png
 
Ce que je veux faire, c'est savoir, quel opérateur a été formé par quel formateur, sur quel poste et à quel standard.
 
Concrètement :
 
-Le site est divisé en secteurs
-Les secteurs possèdent plusieurs bâtiments
-Les bâtiments possèdent plusieurs zones
-Les zones possèdent plusieurs postes
-Les postes possèdent plusieurs documents(standards).
-Un standard peut être rattaché à plusieurs zones de plusieurs bâtiments
-Un opérateur est rattaché à un bâtiment
-Un formateur est rattaché à un bâtiment
-Une formation regroupe la date, le standard, le formateur, l'opérateur
 
Voici ma requête de création de base, ça fonctionne, ça à l'air cohérent mais comme c'est ma première fois :o
 

Code :
  1. Create Database TestSQL;
  2. use TestSQL;
  3. CREATE TABLE Secteurs
  4. (
  5.   [Id_Secteur] int PRIMARY KEY NOT NULL IDENTITY(1,1),
  6.   [Nom_Secteur] varchar(50) NOT NULL UNIQUE
  7. );
  8. CREATE TABLE Batiments
  9. (
  10.     [Id_Batiment] int PRIMARY KEY NOT NULL IDENTITY(1,1),
  11.     [Nom] VARCHAR(50) NOT NULL UNIQUE,
  12.     [Fk_Secteur] int NOT NULL
  13.     CONSTRAINT [UC_Batiment] UNIQUE (Nom, Fk_Secteur)
  14.  
  15. );
  16. CREATE TABLE Zones
  17. (
  18.   [Id_Zone] int PRIMARY KEY NOT NULL IDENTITY(1,1),
  19.   [Nom_Zone] varchar(50) NOT NULL,
  20.   [Fk_Batiment] int NOT NULL
  21.   CONSTRAINT [UC_Zone] UNIQUE (Nom_Zone,Fk_Batiment)
  22. );
  23. CREATE TABLE Postes
  24. (
  25.   [Id_Poste] int PRIMARY KEY NOT NULL IDENTITY(1,1),
  26.   [Nom] varchar(50) NOT NULL,
  27.   [Description] varchar(255) NOT NULL,
  28.   [Fk_Zone] int NOT NULL
  29.   CONSTRAINT [UC_Poste] UNIQUE (Nom,FK_Zone)
  30. );
  31. CREATE TABLE Operateurs
  32. (
  33.   [Id_Operateur] int PRIMARY KEY NOT NULL IDENTITY(1,1),
  34.   [Nom] varchar(255) NOT NULL,
  35.   [Prenom] varchar(255) NOT NULL,
  36.   [Date_Entree] date NOT NULL,
  37.   [Fk_Batiment] int NOT NULL
  38.   CONSTRAINT [UC_Operateur] UNIQUE (Nom,Prenom)
  39. );
  40. CREATE TABLE Formateurs
  41. (
  42.   [Id_Formateur] int PRIMARY KEY NOT NULL IDENTITY(1,1),
  43.   [Nom] varchar(255) NOT NULL,
  44.   [Prenom] varchar(255) NOT NULL,
  45.   [Date_Entree] date NOT NULL,
  46.   [Fk_Batiment] int NOT NULL
  47.   CONSTRAINT [UC_Formateur] UNIQUE (Nom,Prenom)
  48. );
  49. CREATE TABLE Standards
  50. (
  51.   [Id_Standard] int PRIMARY KEY NOT NULL IDENTITY(1,1),
  52.   [Nom_Standard] varchar(50) UNIQUE NOT NULL,
  53.   [Description] varchar(255),
  54.   [Date_Online] Date NOT NULL,
  55.   [Date_Modif] Date NOT NULL,
  56.   [Date_Rev] Date NOT NULL,
  57.   [Fk_Createur] int NOT NULL
  58. );
  59. CREATE TABLE Formations
  60. (
  61.   [Id_Formation] int PRIMARY KEY NOT NULL IDENTITY(1,1),
  62.   [Fk_Operateur] int NOT NULL,
  63.   [Fk_Formateur] int NOT NULL,
  64.   [Fk_Pst_Std] int NOT NULL,
  65.   [Date_Formation] Date NOT NULL
  66.   CONSTRAINT [UC_Formation] UNIQUE (Fk_Operateur,Fk_Formateur,Fk_Poste_Standard,Date_Formation)
  67. );
  68. CREATE TABLE Postes_Standards
  69. (
  70.   [Id_Pst_Std] int PRIMARY KEY NOT NULL IDENTITY(1,1),
  71.   [Fk_Standard] int NOT NULL,
  72.   [Fk_Poste] int NOT NULL
  73.   CONSTRAINT [UC_Pst_Std] UNIQUE (Fk_Standard,Fk_Poste)
  74. );
  75. ALTER TABLE [Batiments] ADD FOREIGN KEY ([Fk_Secteur]) REFERENCES Secteurs ([Id_Secteur]);
  76. ALTER TABLE [Zones] ADD FOREIGN KEY ([Fk_Batiment]) REFERENCES Batiments ([Id_Batiment]);
  77. ALTER TABLE [Postes] ADD FOREIGN KEY ([Fk_Zone]) REFERENCES Zones ([Id_Zone]);
  78. ALTER TABLE [Postes_Standards] ADD FOREIGN KEY ([Fk_Poste]) REFERENCES Postes ([Id_Poste]);
  79. ALTER TABLE [Postes_Standards] ADD FOREIGN KEY ([Fk_Standard]) REFERENCES Standards ([Id_Standard]);
  80. ALTER TABLE [Standards] ADD FOREIGN KEY ([Fk_Createur]) REFERENCES Formateurs ([Id_Formateur]);
  81. ALTER TABLE [Formateurs] ADD FOREIGN KEY ([Fk_Batiment]) REFERENCES Batiments ([Id_Batiment]);
  82. ALTER TABLE [Operateurs] ADD FOREIGN KEY ([Fk_Batiment]) REFERENCES Batiments ([Id_Batiment]);
  83. ALTER TABLE [Formations] ADD FOREIGN KEY ([Fk_Operateur]) REFERENCES Operateurs ([Id_Operateur]);
  84. ALTER TABLE [Formations] ADD FOREIGN KEY ([Fk_Formateur]) REFERENCES Formateurs ([Id_Formateur]);
  85. ALTER TABLE [Formations] ADD FOREIGN KEY ([Fk_Pst_Std]) REFERENCES Postes_Standards ([Id_Pst_Std]);


 
Qu'en pensez vous ? J'ai surtout du mal avec les Constraints. Pour la table bâtiments par exemple, je veux être sur qu'il n'y ai qu'un seul bâtiment qui porte le même dans dans le même secteur.
 
Merci :)

n°2337632
Profil sup​primé
Posté le 06-08-2019 à 17:17:25  answer
 

Bon après pas mal de tests, je me suis rendu compte que les "Constraints" foutaient pas mal la merde.
 
en me basant simplement sur des "uniques" ça fonctionne :)

n°2338639
masklinn
í dag viðrar vel til loftárása
Posté le 03-09-2019 à 09:55:43  profilanswer
 

Il y a des gens qui ont joué avec ON CONFLICT DO UPDATE dans postgres? Comment on gère quand on a plusieurs records en conflict, et donc qu'on a plusieurs records dans la table et plusieurs dans la pseudo-table excluded?

 

(apparemment la clause du DO UPDATE s'exécute comme un UPDATE normal sur toutes les rows en conflit? La doc est vraiment pas claire)

 

(edit: ou bien la pseudo-table EXCLUDED aurait plusieurs entrées quand on a plusieurs rows en insertion qui sont en conflit avec la même row existante?)


Message édité par masklinn le 03-09-2019 à 10:01:51

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2342792
masklinn
í dag viðrar vel til loftárása
Posté le 06-12-2019 à 12:34:35  profilanswer
 

Sur une table historicisee genre (a, b, c, time) qu’elle est la manière la plus efficace de récupérer les derniers (b, c) pour chaque a sur une table avec des centaines de miyons d’entrées?
 
Les possibilités me semblent être distinct, groupby ou window function mais je sais pas s’il y en a une qui serait rapide, ou qu’elle indexation serait utile.

Message cité 2 fois
Message édité par masklinn le 06-12-2019 à 12:34:43

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2342793
flo850
moi je
Posté le 06-12-2019 à 12:38:01  profilanswer
 

je parierais sur  la sous requête : where not exists select 1 from t where  a= b = c = and time >  
 
index sur a  et time  ?


---------------

n°2342797
eclaireur
Posté le 06-12-2019 à 12:50:14  profilanswer
 

masklinn a écrit :

Sur une table historicisee genre (a, b, c, time) qu’elle est la manière la plus efficace de récupérer les derniers (b, c) pour chaque a sur une table avec des centaines de miyons d’entrées?
 
Les possibilités me semblent être distinct, groupby ou window function mais je sais pas s’il y en a une qui serait rapide, ou qu’elle indexation serait utile.


 
Est-ce que A est inséré de façon séquentielle ?
Si l'index clustered sur table est déterminé par A, pas besoin d'index supplémentaire.
 
Attention au fill factor dans ce cas, pour éviter le split de page dans l'arbre.


Message édité par eclaireur le 06-12-2019 à 12:54:15
n°2342821
bosstime
H1N1 ready
Posté le 06-12-2019 à 18:16:45  profilanswer
 

masklinn a écrit :

Sur une table historicisee genre (a, b, c, time) qu’elle est la manière la plus efficace de récupérer les derniers (b, c) pour chaque a sur une table avec des centaines de miyons d’entrées?

 

Les possibilités me semblent être distinct, groupby ou window function mais je sais pas s’il y en a une qui serait rapide, ou qu’elle indexation serait utile.

 

Quelle est la nature exacte des a, b, c ? Cardinalité des a ?

 

Si cardinalité faible et présence d'une clé primaire de type autoincrément, je tenterais bien une table temporaire du type select  a, max(id) group by a et une autojointure pour récupérer les b & c

 

Ca peut aller "relativement" vite si auto increment + a de type integer et indexé :)

 

EDIT : Ne marche que si tu souhaites la dernière ligne pour chaque a, pas les n dernières bien sur ;)


Message édité par bosstime le 06-12-2019 à 18:19:05
n°2342879
poulpeleac​h
Octopus paradisi
Posté le 10-12-2019 à 06:48:09  profilanswer
 

Dans ce genre de cas je fais ça moi (sous Oracle):

 


select a, max(to_char(time, 'YYYY-MM-DD HH24:MI:SS') || '-' || b || '-' || c  ) as toto
from ma_table
group by a

 


Plus une bidouille ensuite pour re-décomposer le résultat (toto).

 

De cette facon un seul scan de la table, pas d autojointure.

Message cité 2 fois
Message édité par poulpeleach le 10-12-2019 à 06:55:20

---------------
Les lacets le gravier et dans l'air du soir , la Chrysler s'envole dans les fougères et les nénuphars
n°2342880
flo850
moi je
Posté le 10-12-2019 à 09:20:42  profilanswer
 

mais pas d'index, si ?


---------------

n°2342881
eclaireur
Posté le 10-12-2019 à 09:24:32  profilanswer
 

poulpeleach a écrit :

Dans ce genre de cas je fais ça moi (sous Oracle):  
 
 
select a, max(to_char(time, 'YYYY-MM-DD HH24:MI:SS') || '-' || b || '-' || c  ) as toto
from ma_table
group by a  
 
 
Plus une bidouille ensuite pour re-décomposer le résultat (toto).
 
De cette facon un seul scan de la table, pas d autojointure.


 
L'aggrégation ne te jette pas ?
 
J'ai un doute quant à la fiabilité du max dans ce cas.

n°2342888
bosstime
H1N1 ready
Posté le 10-12-2019 à 11:09:07  profilanswer
 

poulpeleach a écrit :

Dans ce genre de cas je fais ça moi (sous Oracle):  
 
 
select a, max(to_char(time, 'YYYY-MM-DD HH24:MI:SS') || '-' || b || '-' || c  ) as toto
from ma_table
group by a  
 
 
Plus une bidouille ensuite pour re-décomposer le résultat (toto).
 
De cette facon un seul scan de la table, pas d autojointure.


 
Faire de la mise en forme via le sgbd c'est moyen quand même... :/
 
Et une opération d'aggregation sur une concaténation de plusieurs champs sur des centaines de millions de lignes, c'est un coup à mettre le serveur à terre...

n°2342903
poulpeleac​h
Octopus paradisi
Posté le 10-12-2019 à 18:08:18  profilanswer
 

Fait plein de fois, ca marche très bien.  (Oracle à chaque fois)
Y compris sur des tables à + de 10 millions de lignes.  Bon y a de la CPU et de la RAM bien comme il faut.
Ca fait un TABLE ACCESS FULL, ce qui me parait logique vu que c'est certainement la solution où au final le SGBD parcourira le moins de données. Bon niveau CPU par contre possible que ce soit pas le mieux.

 

Edit : ici la mise en forme est là uniquement pour qu'on obtienne la date max associée à b et c, ma solution ne marcherait pas autrement


Message édité par poulpeleach le 10-12-2019 à 18:13:57

---------------
Les lacets le gravier et dans l'air du soir , la Chrysler s'envole dans les fougères et les nénuphars
n°2342904
eclaireur
Posté le 10-12-2019 à 18:44:08  profilanswer
 

Faire la mise en forme par le SGBD ça reste pas le top :/

n°2342916
poulpeleac​h
Octopus paradisi
Posté le 11-12-2019 à 07:09:05  profilanswer
 

Ca dépend ce que tu veux faire.
Si c est pour faire des analyses occasionnelles sur des données, pour investiguer un problème, je prefere faire comme ça.  

 

Si c'est dans le cadre d'un traitement amené à tourner au moins quotidiennement, évidemment je vais chercher une autre solution mais là je crois que je partirai sur un truc avec une table intermédiaire (contenant seulement   a et max(time)), sinon un fenetrage  car sous Oracle, mon experience perso c'est que le NOT EXISTS c'est trop instable.

  

En fenetrage ca donnerait,

 

select  a, b, c, time
from (
select a, b, c, time,  max(time) over(partition by a) as lastTime
from ma_table
) where time=lastTime

 

mais là niveau impact sur l'activité de la base, je me poserai des questions


Message édité par poulpeleach le 11-12-2019 à 07:11:36

---------------
Les lacets le gravier et dans l'air du soir , la Chrysler s'envole dans les fougères et les nénuphars
n°2342926
rufo
Pas me confondre avec Lycos!
Posté le 11-12-2019 à 13:25:24  profilanswer
 

eclaireur a écrit :

Faire la mise en forme par le SGBD ça reste pas le top :/


C'est pas idiot sa bidouille. Il se sert de cette "mise en forme" pour juste récupérer les valeurs associées à a et la date/heure. Comme la date/heure est convertie en chaîne et est situées en début de chaîne, le MAX va faire une sorte de tri des chaînes obtenues par ordre alphabétique. Mécaniquement, ça sera celle qui a la date/heure la plus élevée qui va ressortir car stockée au format YYYYMMDDHHMMSS.
 
Je me note cette bidouille en tout cas. Dans certains cas, ça peut être plus intéressant qu'une autojointure avec sous-requête...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  20  21  22  23  24  25

Aller à :
Ajouter une réponse
 

Sujets relatifs
Requete SQL de selection complexe[SQL SERVER] Ajout d'une colonne en PS...mais inutilisable
[ODBC] DSN pour se connecter à une base SQL[PDO/SQL] Aide selection et classement (JOIN ??)
Problème conditions requete SQLSQL/PHP BDD de réservation de chambres
Jointure 'LIKE' SQL => BOtable SQL Ajouter une colonne au lieu de creer une nouvelle table
Requête SQL complexe 
Plus de sujets relatifs à : BlaBla@SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR