
54 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
Bereiche oder Dinge im Tabellenentwurf zu erkennen, die optimiert werden k¨onnen,
um sehr viel effizientere Anfragen auszuf¨uhren.
• Add SUM(DISTINCT)
• ANY()-,EVERY()- und SOME()-Gruppierungsfunktionen hinzuf¨ugen. In ANSI-SQL funk-
tionieren diese auf boolsche Spalten, aber wir k¨onnen sie so erweitern, dass sie mit
beliebigen Spalten / Ausdr¨ucken funktionieren, indem wir folgendes anwenden: wert
== 0 -> FALSE und wert <> 0 -> TRUE.
• So ¨uberarbeiten, dass MAX(column) vom selben Typ ist wie der Spaltentyp.
create tabelle t1 (a DATE);
insert into t1 values (now());
create tabelle t2 select max(a) von t1;
show columns from t2;
• Eine nette Syntax f¨ur ein Statement entwickeln, dass auf eine Zeile ein UPDATE ausf¨uhrt,
wenn sie existiert, und eine neue Zeile einf¨ugt (INSERT), wenn sie nicht existiert (so wie
REPLACE bei INSERT / DELETE funktioniert).
2.8.3 Dinge die irgendwann gemacht werden m¨ussen
• Funktion implementieren: get_changed_tables(timeout,table1,table2,...)
• Lesen durch Tabellen so ¨andern, das memmap benutzt wird, falls m¨oglich. Momentan
benutzen nur komprimierte Tabellen memmap.
• Ein neues Zugriffsrecht ’Show priv’ f¨ur SHOW-Befehle hinzuf¨ugen.
• Den automatischen Zeitstempel-Code netter machen. Zeitstempel zum Update-Log
hinzuf¨ugen mit SET TIMESTAMP=#;
• An manchen Stellen read/write mutex benutzen, um mehr Geschwindigkeit zu erhalten.
• Volle Unterst¨utzung von Fremdschl¨usseln. Wahrscheinlich wird man zuerst einmal eine
prozedurale Sprache implementieren wollen.
• Einfache Sichten (Views; zun¨achst auf eine Tabelle, sp¨ater auf jeden beliebigen Aus-
druck).
• Automatisches Schließen einiger Tabellen, wenn eine Tabelle, eine tempor¨are Tabelle
oder eine tempor¨are Datei einen Fehler 23 bekommt (nicht genug offene Dateien).
• Wenn ein Feld=# gefunden wird, alle Vorkommen von Feld auf # setzen. Momentan
wird das nur in einigen einfachen F¨allen gemacht.
• Alle konstanten Ausdr¨ucke mit berechneten Ausdr¨ucken austauschen, falls m¨oglich.
• schl¨ussel = ausdruck optimieren. Momentan wird nur schl¨ussel = feld oder schl ¨ussel =
konstante optimiert.
• Einige der Copy-Funktionen verbinden, um netter Code zu erhalten.
• ‘sql_yacc.yy’ in einen Inline-Parser um¨andern, um die Gr¨oße zu reduzieren und
bessere Fehlermeldungen zu erhalten (5 Tage).
• Den Parser so ¨andern, dass er nur eine Regel pro unterschiedlicher Anzahl von Argu-
menten in Funktionen benutzt.
• Die Benutzung von vollen Berechnungsnamen (full calculation names) im ORDER-Teil
(order part). (F¨ur ACCESS97)
Comentarios a estos manuales