Hier einmal eine Abfrage die ich der Sqlite Seite entnommen habe:
SELECT
blob.rid AS blobRid,
uuid AS uuid,
datetime(event.mtime,'localtime') AS timestamp,
coalesce(ecomment, comment) AS comment,
coalesce(euser, user) AS user,
blob.rid IN leaf AS leaf,
bgcolor AS bgColor,
event.type AS eventType,
(SELECT group_concat(substr(tagname,5), ', ')
FROM tag, tagxref
WHERE tagname GLOB 'sym-*'
AND tag.tagid=tagxref.tagid
AND tagxref.rid=blob.rid
AND tagxref.tagtype>0) AS tags,
tagid AS tagid,
brief AS brief,
event.mtime AS mtime
FROM event CROSS JOIN blob
WHERE blob.rid=event.objid
AND (EXISTS(SELECT 1 FROM tagxref
WHERE tagid=11 AND tagtype>0 AND rid=blob.rid)
OR EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=cid
WHERE tagid=11 AND tagtype>0 AND pid=blob.rid)
OR EXISTS(SELECT 1 FROM plink JOIN tagxref ON rid=pid
WHERE tagid=11 AND tagtype>0 AND cid=blob.rid))
ORDER BY event.mtime DESC
LIMIT 200;
Sie zeigt sehr deutlich was mit besserer Ausnutzung gemeint ist.Sqlite bemerkt dazu:
This query is not especially complicated, but even so it replaces hundreds or perhaps thousands of lines of procedural code.
Und genau das ist der Punkt und der trifft voll in's Schwarze.
Extrem viele DB Konstruktionen und verwendete Abfragen sind in genauso vielen Opensource Titel absolut primitiv.
Die Folgen bedeuten hoher RAM Bedarf, hohe Generierungszeit und unterm Strich sehr viel weniger Besucher als als man vom Inhalt einer Website hätte erreichen können.
Ursachen sind immer gleich - die Entwickler kommen aus dem Hobby Bereich und haben einfach nicht das Wissen und auch nicht die Zeit um da tiefer einzusteigen.
Keine Kommentare:
Kommentar veröffentlichen