1 2 3 4 5 6 7 8 9 10 11 12 13 | fish.user_id, fish.catchdate, fish_categories.name, users.username, media.id AS photo_id FROM fish FORCE INDEX(id) LEFT JOIN users ON users.id = fish.user_id LEFT JOIN media ON media.source_id = fish.id LEFT JOIN fish_categories ON fish_categories.id = fish.fish_id GROUP BY fish.id ORDER BY fish.id DESC LIMIT 0,4 |
Nu zie ik dat de voorbeelden andersom moesten, dan klopt het!quote:The name index is an index over the last_name and first_name columns. The index can be used for queries that specify values in a known range for last_name, or for both last_name and first_name. Therefore, the name index is used in the following queries
Als je een index hebt op (lastname, firstname) dan kun je queries doen als:quote:Op zondag 31 augustus 2008 22:04 schreef Chandler het volgende:
In het voorbeeld dat ik net las stond het volgende:
[..]
Nu zie ik dat de voorbeelden andersom moesten, dan klopt het!
nog een mooie quote:
MySQL cannot use an index if the columns do not form a leftmost prefix of the index gewoon index volgen in je where parameters beginnend van links naar rechter en eventueel meer toevoegen... ?
1 2 3 4 5 | FROM stats_ip_link LEFT JOIN stats_ip ON stats_ip.id = stats_ip_link.ip_id WHERE UNIX_TIMESTAMP( stats_ip_link.lastdate ) > ( UNIX_TIMESTAMP( NOW( ) ) - ( 60 *15 ) ) GROUP BY stats_ip_link.stat_id |
1 2 3 | 1 SIMPLE stats_ip_link ALL NULL NULL NULL NULL 70168 Using where; Using temporary; Using filesort 1 SIMPLE stats_ip eq_ref PRIMARY PRIMARY 4 gfxstatcom_db.stats_ip_link.ip_id 1 Using index |
1 2 3 4 5 | FROM stats_ip_link LEFT JOIN stats_ip ON stats_ip.id = stats_ip_link.ip_id WHERE UNIX_TIMESTAMP( stats_ip_link.lastdate ) > ( UNIX_TIMESTAMP( NOW( ) ) - ( 60 *15 ) ) GROUP BY stats_ip_link.stat_ |
En die query moet ook wachten als de tabel geüpdatet wordt, dus dat kan wel wat traagheid veroorzaken, maar met een rij of 80 is het anders heel snel als die index benut kan worden.quote:Die index moet wel benut kunnen worden, en als je een functie op een kolom loslaat, kan dat niet meer. Zelf werk ik altijd met unix timestamps in een database, maar jouw aanpak moet ook kunnen werken. Kun je niet iets doen als lastdate > mysqls datetime formaat van 15 minuten geleden?
1 2 3 4 5 | FROM stats_ip_link LEFT JOIN stats_ip ON stats_ip.id = stats_ip_link.ip_id WHERE stats_ip_link.lastdate > ....... GROUP BY stats_ip_link.stat_id |
1 2 3 4 5 | FROM stats_ip_link LEFT JOIN stats_ip ON stats_ip.id = stats_ip_link.ip_id WHERE stats_ip_link.lastdate > ( NOW( ) - ( 60 *15 ) ) GROUP BY stats_ip_link.stat_id |
1 2 3 4 | FROM stats_ip_link LEFT JOIN stats_ip ON stats_ip.id = stats_ip_link.ip_id WHERE stats_ip_link.lastdate > ( NOW( ) - ( 60 *15 ) ) |
http://bitfilm.net/2007/08/25/choosing-optimal-mysql-data-types/quote:TIMESTAMP requires 4 bytes.
DATETIME requires 8 bytes.
1 2 3 4 5 | RewriteBase /project RewriteCond %{REQUEST_FILENAME} \.^(gif|jpe?g|png)$ [NC] RewriteRule ^([A-Za-z0-9-\-.\/]+)$ index.php?input=$1 |
En waarom zou je dat dan willenquote:Op maandag 1 september 2008 18:45 schreef Xcalibur het volgende:
Je kunt geen twee timestamps in 1 tabel gebruiken... in ieder geval geen timestamps die automatisch geupdate worden iig.
1 2 | modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
Vreemd. Maar dan maak je gewoon 1 autoupdate kolom (modified) en de ceated insert je zelf. (Dat insert statement heb je uiteraard maar op 1 plaats staan, dus dat pas je ze aanquote:MySQL said:
#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
Wat is het nut van twee kolommen waar altijd dezelfde waarde in staat?quote:Op maandag 1 september 2008 20:00 schreef Chandler het volgende:
je kunt wel twee timestamps gebruiken maar zit er een máár aan!. De eerste timestamp zal automatisch geupdated worden en de tweede niet, beetje vervelend![]()
1 |
quote:Op maandag 1 september 2008 22:23 schreef Farenji het volgende:
Ik gok dat je niet het juiste ipadres of de juiste hostnaam hebt ingevuld.
quote:Database-server: sql10.pcextreme.nl (sql10.pcextreme.nl)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $mysqlserver = "sql10.pcextreme.nl"; $user = "user"; $password = "password"; $database = "database"; $connect = mysql_connect($mysqlserver, $user, $password) or die (mysql_error()); // echo "<p>Er is een connectie opgezet met de MySQL-server: <strong>" . $mysqlserver . "</strong>. "; mysql_select_db($database) or die (mysql_error()); // echo " Van deze MySQL-server is de database <strong>" . $database . "</strong> geselecteerd.</p>"; ?> |
1 2 3 4 5 6 7 8 | echo '<SELECT MULTIPLE SIZE=10>'; while($row = mysql_fetch_array($result)){ echo '<OPTION VALUE='.$row["id"].'>'; echo $row["name"]; } echo "</SELECT>"; ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |