[mysql] optymalizacja problem

0

Witam,

przeglądam na serwerze mysql_slow_logs i często pojawiają się tam zapytania typu:

SELECT * FROM table WHERE id = "61460" LIMIT 1; 
UPDATE table SET views = views+1 WHERE id='14760'; 

Pole id w table to autoincrement PRIMARY w bazie 190 000 rekordów tabela MyISAM
Czy to naprawde może tak obiciązac baze ze leci do slow logs? Jak mozna to zoptymalizowac? Czy cudzyslowy maja tutaj znaczenie (ze niepotrzebnie sa)?

Drugie czesto pojawiajace sie zapytania to:

SELECT * FROM table WHERE MATCH (title) AGAINST ("jakas fraza") LIMIT 0,18; 
SELECT * FROM table WHERE id IN (132334,56090,60200,131730,87263,142595,19891,27122,30563,4343,109495,24719,108605,55320,111283); 

Jak zoptymalizować takie zapytania? Czy to złe zapytania czy z bazą coś nie tak?

0
  1. masz na title założony index FULLTEXT
  2. zrób sobie explain na zapytanie z "" i zobacz czy używa indexów bo bardziej prawdopodobne jest, że zamiast zamienić to co w zapytaniu jako string na integer i szukać używając indeksu zamienia kolumnę id na string i szuka bez indeksu
    i jeszcze o optymalizacji FTS http://dev.mysql.com/doc/refm[...]/en/fulltext-fine-tuning.html
0

Tak na title mam fulltext bo moja strona najczęściej jest używana jako wyszukiwarka, wczesniej używałem LIKE ale to chyba gorsze niż fulltext. Jest coś innego z czego moge skorzystać do szukania i żeby dobrze działało?

0

co do przeszukiwania samego textu to nie znajdziesz nic szybszego od full text search - w końcu po to go wymyślono. Co do pozostałych zapytań to zrób sobie explain i zobacz czy i jakich używa indexów

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0