29. december 2007 - 21:41Der er
15 kommentarer og 1 løsning
Underlig langsom sql-string
Jeg fatter ikke hvorfor min første sql-string(1) er 1.75 sek om at lave en søning når min sql-string(2) kan gøre det på 0.02 sek bare fordi jeg tilføjer: "AND MATCH(im.title) AGAINST ('boot')" efter "WHERE iu.self_id = 2"
sql-string(1): 1.75 sek SELECT im.id, iu.movie_number AS number, im.title, im.year, im.url, ig.danish AS genre, io.text AS ugroup, ic.comment, ir.result, MATCH(im.title) AGAINST ('boot') AS Score FROM idb_movie im INNER JOIN idb_userself iu ON iu.idb_id = im.id LEFT JOIN idb_genre ig ON ig.id = iu.genre_id LEFT JOIN idb_group io ON io.id = iu.group_id AND io.self_id = 2 LEFT JOIN idb_comment ic ON ic.idb_id = im.id AND ic.self_id = 2 LEFT JOIN idb_rating ir ON ir.id = im.id WHERE iu.self_id = 2 HAVING Score ORDER BY Score LIMIT 0,20;
sql-string(2): 0.02 sek SELECT im.id, iu.movie_number AS number, im.title, im.year, im.url, ig.danish AS genre, io.text AS ugroup, ic.comment, ir.result, MATCH(im.title) AGAINST ('boot') AS Score FROM idb_movie im INNER JOIN idb_userself iu ON iu.idb_id = im.id LEFT JOIN idb_genre ig ON ig.id = iu.genre_id LEFT JOIN idb_group io ON io.id = iu.group_id AND io.self_id = 2 LEFT JOIN idb_comment ic ON ic.idb_id = im.id AND ic.self_id = 2 LEFT JOIN idb_rating ir ON ir.id = im.id WHERE iu.self_id = 2 AND MATCH(im.title) AGAINST ('boot') HAVING Score ORDER BY Score LIMIT 0,20;
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
sql-string(1): 1.75 sek id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE ic system <MEMO> <NULL> <NULL> <NULL> 0 const row not found 1 SIMPLE ir system <MEMO> <NULL> <NULL> <NULL> 0 const row not found 1 SIMPLE iu ALL <MEMO> <NULL> <NULL> <NULL> 50000 Using where; Using temporary; Using filesort 1 SIMPLE ig ref <MEMO> search <BLOB> <MEMO> 1 1 SIMPLE io eq_ref <MEMO> PRIMARY <BLOB> <MEMO> 1 1 SIMPLE im eq_ref <MEMO> PRIMARY <BLOB> <MEMO> 1
sql-string(2): 0.02 sek id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE ic system <MEMO> <NULL> <NULL> <NULL> 0 const row not found 1 SIMPLE ir system <MEMO> <NULL> <NULL> <NULL> 0 const row not found 1 SIMPLE im fulltext <MEMO> unik <BLOB> <MEMO> 1 Using where; Using filesort 1 SIMPLE iu ref <MEMO> search <BLOB> <MEMO> 1 Using where 1 SIMPLE ig ref <MEMO> search <BLOB> <MEMO> 1 1 SIMPLE io eq_ref <MEMO> PRIMARY <BLOB> <MEMO> 1
Hvor mange rækker matcher (1) i forhold til hvor mange rækker der ville komme ud af det uden den where, der er i (1)? Bare antallet af rækker. Indexer virker bedst, når de kun udvælger en del af sættet - skal hele (eller næsten hele) sættet ud, så kan indexet være ligegyldigt.
Mange tak for hjælpen.. vi snakkes nok ved i det nye år :D
Godt nytår til jer..
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.