Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

MySQL Anfrage RAND und LIMIT

Frage Entwicklung Datenbanken

Mitglied: ManicPumpkin

ManicPumpkin (Level 1) - Jetzt verbinden

13.06.2011 um 19:46 Uhr, 2397 Aufrufe, 1 Kommentar

Randomanfrage dauert zu lange. Alternative ?

Hallo,

ich möchte aus einer Datenbank Tabelle (mit ca. 31 Millionen Einträgen) ca. 100.000 bis 500.000 Einträge zufällig auswählen. Die Einträge sollen in einer anderen Tabelle gespeichert werden.

Ich habe jedoch das Problem dass ich mittels ...
SELECT * FROM table WHERE 1 ORDER BY RAND() LIMIT 100000;
... bis morgen früh und noch viel länger sitzen müsste.

Die Anfrage mit 5.000 Einträgen dauert schon bald eine halbe Stunde und so richtig effiktiv ist das nun auch nicht, da ich nicht immer 30 Minuten für 5.000 Einträge warten kann.

Kennt jemand eine Alternative dazu ?

Beste Grüße und Danke,
SkiD.
Mitglied: dog
14.06.2011 um 02:52 Uhr
WHERE 1

Ist schonmal überflüssig.

Dann solltest du bedenken, dass ORDER und LIMIT die letzten Operationen sind, die auf eine Abfrage angewendet werden (in der Reihenfolge).

Was du machst ist als Abfrage identisch mit:

SELECT * FROM table

Nur das du noch mal richtig Overhead für RAND() hinzufügst.

Die einzige Möglichkeit da was zu optimieren ist das SELECT auf einen Index und nicht auf die ganze Tabelle zu machen.

Spaßeshalber habe ich das grade mal mit einer Tabelle mit 3,8M Rows (2GB) ausprobiert:

SELECT * FROM tbl LIMIT 100000 => 208ms
SELECT id FROM tbl LIMIT 100000 => 183ms
SELECT id FROM tbl ORDER BY RAND() LIMIT 100000 => 37,6s

Das sind natürlich die Serverzeiten. Alles andere ist Datentransfer.
Aber mal ein Tipp:

SELECT * FROM tbl WHERE id IN (...100000 zufallszahlen mit PHP erzeugt...) => 0,9s + 9,4s

Die Zeiten sind auf einem alten Pentium IV.
Bitte warten ..
Ähnliche Inhalte
Ausbildung
gelöst Anfrage von "Quereinsteiger" für IT Sektor (15)

Frage von Peter1985 zum Thema Ausbildung ...

VB for Applications
gelöst Feld mit CSV-Daten aus MySQL-Datenbank einlesen (3)

Frage von Andreas.HH1 zum Thema VB for Applications ...

Datenbanken
gelöst MYSQL Abfrage Werte summieren (3)

Frage von Ghost108 zum Thema Datenbanken ...

PHP
Definition Script für "memory limit" (1)

Frage von lexa-lexa zum Thema PHP ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(6)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Heiß diskutierte Inhalte
Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Linux
gelöst Google Chrome startet nicht (12)

Frage von Thomas91 zum Thema Linux ...