Ja, maar hij gebruikt er maar 1.. (tot aan versie 5.0)quote:
On track
GoT Index » Programming » [php/mysql] Optimaliseren query voor priveberichten systeem
Ja, maar hij gebruikt er maar 1.. (tot aan versie 5.0)quote:Marcj schreef op zaterdag 05 juli 2008 @ 13:22:
[...]
Hoezo? Zie: http://dev.mysql.com/doc/refman/5.0/en/indexes.html
Er moeten sowieso 16 indices per tabel ondersteund worden.
On track
PhpMyAdmin: tabel structuur -> create index on x columnsquote:Piete schreef op zaterdag 05 juli 2008 @ 13:27:
...
Maar volgens mij moet dit best sneller kunnen. Hoe kan je die gecombineerde INDEX maken van berichtid en naar op de manier zoals paar post hierboven gezegt werd?
On track
Op 'naar' en 'type' zelfsquote:WouZz schreef op zaterdag 05 juli 2008 @ 13:12:
Voor de WHERE clause heeft ie een index op 'naar' nodig
Piete wijzigde dit bericht 05-07-2008 14:06 (51%)
Je hebt dus een index nodig op 'naar', 'type' en 'berichtid'quote:
On track
| <?php
|
Noork wijzigde dit bericht 05-07-2008 14:56 (8%)
Waar baseer je dat op? Mediumint 3?quote:Ik zie nl. dat je userid 3 karakters groot is, dus zou je max 999 gebruikers hebben. Dan hebben de gebruikertjes toch flink zitten te spammen Eigen server voor een website voor 999 gebruikers lijkt me ook wat overkill?
Piete wijzigde dit bericht 05-07-2008 14:44 (8%)
Niet wanneer je de lengte van je MEDIUMINT gaat beperken tot 3 chars. Dan zal je nooit boven 999 komen.quote:Waar baseer je dat op? Mediumint 3?
Mediumint 3 http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html kan waarden bevatten van 0 tot 16777215 lijkt mij wel voldoende?
Hier staat wat het aantal tekens inhoud:quote:The display width does not constrain the range of values that can be stored in the column, nor the number of digits that are displayed for values having a width exceeding that specified for the column. For example, a column specified as SMALLINT(3) has the usual SMALLINT range of -32768 to 32767, and values outside the range allowed by three characters are displayed using more than three characters.
quote:This optional display width is used to display integer values having a width less than the width specified for the column by left-padding them with spaces.
quote:The display width does not constrain the range of values that can be stored in the column
Piete wijzigde dit bericht 05-07-2008 17:23 (108%)
MaxxMark wijzigde dit bericht 05-07-2008 18:54 (3%)
Reden: url toegevoegd
juris ignorantia est cum jus nostrum ignoramus
't Giet zoas 't giet | Nederlands en Belgisch [k]ubuntu forum
Dat zeg ik.quote:Piete schreef op zaterdag 05 juli 2008 @ 20:59:
ALTER TABLE `priveberichten` ADD INDEX `IX_test1` ( `naar` , `type` , `berichtid` )
Als je maar wel al deze rijen wil hebben. Als je in code bepaalt dat je er maar 10 wil is het nogal zonde.quote:Het idee achter geen LIMIT is berichten ouder dan 14 dagen worden vanzelf verwijderd.
Talkin.nl daily photoblog
Day 949: IR Bunkers
Foto specs: Canon 300D, Canon 60/2.8 Macro USM, 25s, f/7.1, ISO 100, IR
't Giet zoas 't giet | Nederlands en Belgisch [k]ubuntu forum
1 | SELECT * FROM SomeTable LIMIT 20, 10; |
Het allertofste ASCII teken: #8238. !snee raam tsket ezed reetceleS ?moraaW
Die tweede index op naar en type is overbodig omdat daarvoor ook de index op naar, type en berichtid kan worden gebruikt.quote:Omega007 schreef op zaterdag 05 juli 2008 @ 17:32:
probeer deze 2 eens:
ALTER TABLE `priveberichten` ADD INDEX `IX_test1` ( `naar` , `type` , `berichtid` )
ALTER TABLE `priveberichten` ADD INDEX `IX_test2` ( `naar` , `type` )
Jij schijt ook altijd op die showmodel toiletpotten bij de Gamma? "Ja, ik zag een toiletpot en..."
"Intelligent input darlin'. Why don't you just have another beer then? - Kate Nash.
500 berichten op 1 pagina is toch ook helemaal niet overzichtelijk? Een volgende/vorige scriptje is snel gemaakt. Kijk b.v. naar PEAR Pager.quote:Piete schreef op zondag 06 juli 2008 @ 11:11:
Ja dat snap ik wel, maar snap niet waarom ik het zou moeten toepassen? Dan kan ik niet alle records laten zien tenzij ik een navigatie systeem eronder zet.
MEDIUMINT kan waarden bevatten tot 224; in een normale database geeft het getalletje erarchter wel degelijk aan hoeveel cijfers er opgeslagen worden, en kun je dus geen getal boven de 999 representeren. MySQL negeert dat soort beperkingen en dus kun je er inderdaad grotere getallen in opslaan, maar dan kun je die (3) in je tabeldefinitie net zo goed weglaten (tenzij het padden tot drie karakters, wat MySQL dan weer wel doet, belangrijk is). Die 3 zorgt er in ieder geval niet voor dat er 3 bytes voor de opslag gebruikt worden; dat is al wat MEDIUMINT doet.quote:Piete schreef op zaterdag 05 juli 2008 @ 14:43:
[MEDIUMINT(3)] kan waarden bevatten van 0 tot 16777215 lijkt mij wel voldoende?
Juist, en dat geld ook voor eventuele keys op kolommen. In het algemeen heeft het geen zin om twee keys te hebben waarbij de ene een prefix is van de andere; dan kun je de eerste achterwege laten.quote:Creepy schreef op zondag 06 juli 2008 @ 11:33:
Die tweede index op naar en type is overbodig omdat daarvoor ook de index op naar, type en berichtid kan worden gebruikt.
Heb je dit al uitgezocht? Lijkt me niet onbelangrijk.quote:Piete schreef op zaterdag 05 juli 2008 @ 14:29:
Is je Mysql db niet gewoon traag, hoe zit het met gebeugengebruik e.d., aantal open connecties e.d.?
Onbekend
Ik doel meer op een andere machine. Wel gewoon Myisam, maar dan op je eigen pc bijvoorbeeld.quote:Heb je op een andere db getest?
Nee werkt nu gewoon op mysql met tabel type mysiam heb InnoDB geprobeerd maar had het idee dat die nog langzamer werd.
© 1998-2008 Tweakers.net BV - Based on React - Hosted by True - Served by Astraeus
© 1998-2008 Tweakers.net BV - Based on React - Hosted by True - Served by Astraeus