MySQL: temporäre Tabellen

Published 2009-06-23, 23:57

Große Queries, die sowieso per ‚Using temporary‘ anzeigen, dass im Hintergrund eine temporäre Tabelle erstellt wird, lassen sich oft wunderbar zwei- oder dreiteilen indem man erst eine temporäre Tabelle erstellt und dort nun dann die Abfragen ausführt. Besonders effektiv ist das, wenn Teil 1 des Queries die Anzahl der zu betrachtenden Zeilen stark einschränkt, Teil 2 dann jedoch nochmal heftig sortieren muss.

MySQL: Delete a subset in a table quickly

Published 2009-06-21, 14:04

Heute mal wieder über einen netten MySQL-Hack gestolpert:

The trick is, that INNER JOIN will ’shrink‘ the LargeTable down to the size of the TemporarySmallTable and the delete will operate on that smaller set only, since USING will reference to the joined table.

http://blog.mkoebele.de/2008/07/mysql-delete-subset-in-table-quickly.html
http://dev.mysql.com/doc/refman/5.0/en/delete.html#c9536

Mehr davon bitte…

MySQL: The table ‚foo‘ is full

Published 2008-03-31, 14:14

Ich muss zugeben, ich war erstmal ziemlich platt. Aber, es gibt ja zum Glück Erklärungen und (mutmaßliche) Lösungen:

http://dev.mysql.com/doc/refman/5.0/en/full-table.html
http://dev.mysql.com/doc/refman/5.1/de/full-table.html
http://jeremy.zawodny.com/blog/archives/000796.html

Das von Jeremy Zawodny vorgeschlagene

alter table foo max_rows = 200000000000 avg_row_length = 50;

funktioniert auch wunderbar. Nun passen nochmal ein paar Gigabyte rein.

MySQL: INSERT … ON DUPLICATE KEY UPDATE

Published 2007-08-23, 13:38

Ich kann gar nicht oft genug darauf hinweisen:

INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;

Sinn der Sache:
Wenn ein INSERT einen doppelten Wert für ein UNIQUE- oder PRIMARY KEY-Feld erzeugen würde wird das UPDATE ausgeführt.

http://dev.mysql.com/doc/refman/4.1/en/insert-on-duplicate.html
http://www.mysqlperformanceblog.com/2006/05/29/insert-on-duplicate-key-update-and-summary-counters/

Vielleicht wird man dann irgendwann diese umständlichen if(mysql_insert_id() == 0) oder mysql_affected_rows-Konstruktionen los.

Know your enemy: XSS, SQL Injection etc.

Published 2007-02-27, 01:51

Auch wenn Betamode nun wohl absolut zum Linkblog verkommt:

http://www.honeynet.org/papers/webapp/

Automatisierte MySQL-Backups auf mehreren Servern: phpMyBackupPro

Published 2007-02-25, 16:11

http://www.phpmybackuppro.net/

MySQL-Front -> HeidiSQL

Published 2006-11-14, 21:46

Altes unter neuem Namen:

HeidiSQL is a front-end interface for the popular MySQL database. It allows you to manage and administer your databases from an easy to use Windows interface, rather than via the command line.

MySQL: Zeichensatzärger

Published 2006-08-25, 16:21

Im Juli habe ich mit meinem Beitrag latin1_german1_ci oder latin1_german2_ci? kurz das Thema Kollationen angeschnitten. Kris Köhntopp hat den ganzen Zeichensatzkram etwas ausführlicher erklärt:

http://blog.koehntopp.de/archives/1360-Zeichensatzaerger.html

Häufige Fehlerquelle bei mysql_real_escape_string()

Published 2006-07-19, 23:16

mysql_real_escape_string() sollte ja auf jeden String angewendet werden, der in die Datenbank eingetragen wird. Mehrmals passierte es mir nun schon, dass ich auf neuen Servern nach der Ausführung eines Scriptes den Backslash auch in der Datenbank wiederfand. Grund:

Falls Sie magic_quotes_gpc aktiviert haben und mit Daten aus Benutzereingaben arbeiten, müssen Sie vorher Ihre Daten mit stripslashes() behandeln.

So einfach. Muss es mir nur merken. Und den Apache nach der Änderung neu starten.

latin1_german1_ci oder latin1_german2_ci?

Published 2006-07-06, 17:42

Seit Version 2.6.x unterstützt phpMyAdmin die sogenannten Kollationen. Kollationen sind Zeichensätze und Sortierreihenfolgen nach denen zum Beispiel ORDER BY – Klauseln die Daten einer Datenbank sortieren. Es gibt 2 deutsche Zeichensätze, german1_ci und german2_ci. Der Unterschied ist im MySQL-Referenzhandbuch ganz gut dargestellt:

Die Sortierfolgen latin1_german1_ci und latin1_german2_ci basieren auf den DIN-1- und DIN-2-Normen. DIN ist das Deutsche Institut für Normung, also die deutsche Standardisierungsorganisation. DIN-1 heißt „Wörterbuchsortierung“, DIN-2 „Telefonbuchsortierung“.

  • Regeln für latin1_german1_ci (Wörterbuchsortierung):
    Ä = A
    Ö = O
    Ü = U
    ß = s
  • Regeln für latin1_german2_ci (Telefonbuchsortierung):
    Ä = AE
    Ö = OE
    Ü = UE

25 queries. 0,125 seconds.