|
Тема |
Re: Nqkolko poqsneniq [re: зъл oйлюфф] |
|
Автор | pip (Нерегистриран) | |
Публикувано | 30.10.03 11:12 |
|
|
:-)
това само доказва, че нищо не е такова каквото изглежда.
направих и няколко бенчмарк-а, при таблица без PRI с индекси, и на такава с PRI. редовете са около 500, може би са малко, не знам. То се видя че и доста работи не ги знам.
select uasUserID, count(*) from table group by UserID
+-----------+----------+
| uasUserID | count(*) |
+-----------+----------+
| 1 | 268 |
| 4 | 23 |
| 8 | 54 |
| 16 | 5 |
| 25 | 5 |
| 29 | 16 |
| 55 | 16 |
| 150 | 16 |
| 162 | 21 |
| 192 | 21 |
| 200 | 16 |
| 250 | 16 |
+-----------+----------+
12 rows in set (0.00 sec)
таблицата с Индексите:
explain select * from indx where uasUserID = 8 and uasActionID = 1;
+-------+------+---------------+------+---------+-------+------+------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+-------+------+---------------+------+---------+-------+------+------------+
| indx | ref | user,action | user | 2 | const | 54 | where used |
+-------+------+---------------+------+---------+-------+------+------------+
1 row in set (0.00 sec)
таблицата с PRI:
explain select * from pris where uasUserID = 8 and uasActionID = 1;
+-------+------+---------------+---------+---------+-------+------+-------------------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+-------+------+---------------+---------+---------+-------+------+-------------------------+
| pris | ref | PRIMARY | PRIMARY | 2 | const | 54 | where used; Using index |
+-------+------+---------------+---------+---------+-------+------+-------------------------+
1 row in set (0.01 sec)
1 000 000 000 e broikata.
таблицата с PRI:
mysql> select benchmark(1000000000, 'select * from pris where uasUserID = 8 and uasActionID = 1');
+-------------------------------------------------------------------------------------+
| benchmark(1000000000, 'select * from pris where uasUserID = 8 and uasActionID = 1') |
+-------------------------------------------------------------------------------------+
| 0 |
+-------------------------------------------------------------------------------------+
1 row in set (1 min 17.95 sec)
таблицата с Индексите:
mysql> select benchmark(1000000000, 'select * from indx where uasUserID = 8 and uasActionID = 1');
+-------------------------------------------------------------------------------------+
| benchmark(1000000000, 'select * from indx where uasUserID = 8 and uasActionID = 1') |
+-------------------------------------------------------------------------------------+
| 0 |
+-------------------------------------------------------------------------------------+
1 row in set (1 min 25.42 sec)
Тези бенчмаркове май не са много показателни, при няколкото други, и за двете таблици даде почти едно и също време.
например за UserID = 1, където са почти половината от редовете с него, PRI изобщо не използва индекси, а сканира цялата таблица, докато с Индексите си ги използваше
и сега съм на кръстопът коя реализация да използвам. То времето ще покаже, но предпочитам да не използвам точно този вариант.
може би вече ви омръзна да се занимавате с това, но ако можете да ме посъветвате ...
Благодаря, поне две неща научих от тази тема
|
| |
|
|
|