mysql04, BAZY DANYCH, Kurs MySQL


Przyspieszenie szybkości wykonywania zapytań

Ile rekordow w tej tabelce?

count

select count(1) from duzatabelka;

sprawdzenie statusu tabel

show table status; --- wynik nie miesci się na ekranie

show table status\G; - zmina zapisu wierszowego na zapis kolumnowy

0x01 graphic

Wyciągnij kilka początkowych rekordów!

10 losowych rekordow

select * from duzatabelka

limit 10;

0x01 graphic

Ile jest tutaj rekordów, których cena > 10000 i <30000

select count(1) from duzatabelka

where cena >10000 and cena<30000;

0x01 graphic

Wielokrotne wykonywanie tego samego zapytania sprawia ze

wynik tego zapytania trafia do cache.

My jak optymalizujemy nie możemy sobie na to pozwolic zatem:

select sql_no_cache count(1) from duzatabelka

where cena >10000 and cena<30000;

musimy przeksztalcic structure danych….

show create table duzatabelka;

0x01 graphic

Indexy:

Mamy książkę telefoniczną.

niealfabetycznie - dane bez indeksów

index zakładamy na to poczym wyszukujemy:

jeśli wyszukujemy po nazwiskach to index zakładam na nazwisko.

Jak w tej tabelce wyszukujemy po cenie to index musi zostać założony na cenie.

Zakładanie indexu:

create index poCenie on duzatabelka (cena);

zapytanei wywoluje sie znacznie szybciej.

select sql_no_cache count(1) from duzatabelka

where cena >10000 and cena<30000;

jak dokladnie wyglada to zapytanie?

Wyjaśnij mi to zapytanie:

explain select sql_no_cache count(1) from duzatabelka

where cena >10000 and cena<30000;

explain select sql_no_cache count(1) from duzatabelka

where cena >10000 and cena<30000\G;

0x01 graphic

Usune założony index:

drop index poCenie on duzatabelka;

explain select sql_no_cache count(1) from duzatabelka

where cena >10000 and cena<30000\G;

0x01 graphic

Wydajność zapytania bez indexu jest znacznie mniejsza.

10 losowych rekordow

select * from duzatabelka

limit 10;

0x01 graphic

select sql_no_cache count(1) from duzatabelka

where cena >10000 and cena<30000

and kod='iegoojabee';

tu jest wyszukiwanie po cena oraz kod

create index ok on duzatabelka

(cena, kod); - kolejność pól ma znaczenie!

Jeżeli kod byłby najpierw musiałbym odwrócić!

explain select sql_no_cache count(1) from duzatabelka

where cena >10000 and cena<30000

and kod='iegoojabee'\G;

0x01 graphic

Jak wyszukujemy artykuły na podstawie słów kluczowych?

Select id from duzatabelka

Where opis like'%ipoiliev%';

Jak szukam po polu opis:

create index poOpisie on duzatabelka(opis);

na pole typu text nie da rady założyć indenu!

wyszukiwanie full text!

Create fulltext index poOpisie on duzatabelka(opis);

Indexy fulltextowe to najszybsze z indexow!

Select sql_no_cache id from duzatabelka

Where opis like'%ipoiliev%';

explain select sql_no_cache id from duzatabelka

Where opis like'%ipoiliev%'\G;

0x01 graphic

Nie mozna indexow fulltext tak odpytywac. sa specjalne polecenia do tego!

select sql_no_cache id from duzatabelka

Where match (opis) against('ipoiliev');



Wyszukiwarka

Podobne podstrony:
mysql03b, BAZY DANYCH, Kurs MySQL
mysql01, BAZY DANYCH, Kurs MySQL
1637, Bazy danych- Kurs
Bazy danych i mysql od podstaw Nieznany (3)
Bazy Danych I Mysql Od Podstaw
podstway obslugi klienta bazy danych MySQL
PHP MySQL SQL CGI bazy danych w internecie, Oracle, Oracle - materiały różne
Tworzenie bazy zdrowie w MYSQL, Bazy danych
BazyDanych - MySQL - 3, Nauka, studia infa, Semestr 3, Bazy danych, 1 MYSQL
Bazy danych i MySQL Od podstaw Nieznany (2)
BazyDanych - MySQL - 5, Nauka, studia infa, Semestr 3, Bazy danych, 1 MYSQL
Bazy danych i mysql od podstaw Nieznany (3)
Bazy danych i MySQL Od podstaw 2
Bazy danych i MySQL Od podstaw bdmsqp
plikus pl bazy danych i mysql od podstaw

więcej podobnych podstron