Deze query wordt bij het aanroepen van mijn voorpagina 2 maal uitgevoerd en volgens mij zorgt die ervoor dat het behoorlijk traag is, omdat het een hele grote tabel met veel records helemaal na moet lopen.
Nu wilde ik hier voor een INDEX aanmaken, alleen om 1 of andere reden gebruikt hij hem niet, dit is de query:
Als ik hier een EXPLAIN van draai:
Hij ziet wel de possible keys, maar hij gebruikt ze niet, weet iemand waarom dit zo is?
Mijn indexen zien er zo uit:
Meer dan 1 INDEX sleutel was gecreëerd voor de kolom `uid_local`
zoals je ziet die 2e index wordt wel gebruikt, alleen de andere gebeurt niets mee.
Googlen leverd weinig op aangezien die vaak alleen uitleggen wat indexen zijn en hoe ze aan te maken, waar ik wel achter kwam is dat hoe de query nu is, hij heel erg slecht voor de performance is.
Ik heb al geprobeerd alle velden in 1 grote index te zetten of alle velden in zijn eigen aparte index, maar het blifjt hetzelfde, zo te zien gebruikt hij ze niet..
Iemand een idee?
Nu wilde ik hier voor een INDEX aanmaken, alleen om 1 of andere reden gebruikt hij hem niet, dit is de query:
SQL:
1
2
3
4
5
6
7
8
9
10
11
| # Query_time: 0 Lock_time: 0 Rows_sent: 1 Rows_examined: 22232 EXPLAIN ANALYZE SELECT COUNT(DISTINCT(tt_news.uid)) FROM tt_news LEFT JOIN tt_news_cat_mm ON tt_news.uid = tt_news_cat_mm.uid_local WHERE hidden != 1 AND deleted != 1 AND tt_news.pid IN (448,75, heel erg veel nummers hier, 3443, 1242) AND 1=1 AND tt_news.sys_language_uid IN (0,-1) AND (tt_news.archivedate=0 OR tt_news.archivedate>1195126294) AND (IFNULL(tt_news_cat_mm.uid_foreign,0) IN (1000000038,1000000323,1000000333,1000000047,1000000312)); |
Als ik hier een EXPLAIN van draai:
code:
1
2
3
4
5
6
| +----+-------------+----------------+------+-----------------------------------------------+--------------------+---------+-----------------------+------+--------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+----------------+------+-----------------------------------------------+--------------------+---------+-----------------------+------+--------------------------+ | 1 | SIMPLE | tt_news | ALL | parent,deleted,hidden,IDX_TTNEWS1,IDX_TTNEWS2 | NULL | NULL | NULL | 9988 | Using where | | 1 | SIMPLE | tt_news_cat_mm | ref | uid_local,IDX_TTNEWS_CAT_MM1 | IDX_TTNEWS_CAT_MM1 | 4 | livetypo3.tt_news.uid | 2 | Using where; Using index | +----+-------------+----------------+------+-----------------------------------------------+--------------------+---------+-----------------------+------+--------------------------+ |
Hij ziet wel de possible keys, maar hij gebruikt ze niet, weet iemand waarom dit zo is?
Mijn indexen zien er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| tt_news tabel: Sleutel naam Type Kardinaliteit Actie Veld PRIMARY PRIMARY 9988 uid parent INDEX 277 pid t3ver_oid INDEX 1 t3ver_oid t3ver_wsid deleted INDEX 2 deleted hidden INDEX 2 hidden IDX_TTNEWS1 INDEX 5 sys_language_uid IDX_TTNEWS2 INDEX 3 archivedate tt_news_cat_mm Sleutel naam Type Kardinaliteit Actie Veld uid_local INDEX 7494 uid_local uid_foreign INDEX 299 uid_foreign IDX_TTNEWS_CAT_MM1 INDEX 14988 uid_local uid_foreign |
Meer dan 1 INDEX sleutel was gecreëerd voor de kolom `uid_local`
zoals je ziet die 2e index wordt wel gebruikt, alleen de andere gebeurt niets mee.
Googlen leverd weinig op aangezien die vaak alleen uitleggen wat indexen zijn en hoe ze aan te maken, waar ik wel achter kwam is dat hoe de query nu is, hij heel erg slecht voor de performance is.
Ik heb al geprobeerd alle velden in 1 grote index te zetten of alle velden in zijn eigen aparte index, maar het blifjt hetzelfde, zo te zien gebruikt hij ze niet..
Iemand een idee?
[ Voor 2% gewijzigd door een moderator op 15-11-2007 13:03 . Reden: Code tags toegevoegd ]