Pull to refresh
9
0
Алексей Кузнецов @Webtoucher

User

Send message
Ну лично мне всегда не хватает проматывания табов, как в лисе. Ну есть у меня дурная привычка открывать сотню табов, что уж тут поделаешь… А ещё не понравилось, что в закладках допустим только один уровень вложенности. Неужели снятие этого ограничения противоречит чей-то религии??
Обнаружил в себе ультраминималиста… ))

sort($arr);
Ну, наверное, правильней сказать, что конструктор вообще ничего не возвращает… То, что мы помещаем в конструктор, вызывается после создания экземпляра класса.
Ты наверное не помнишь, почему в своё время все отказались от использования глобальных переменных?? Предлагаю воспользоваться любимым поисковиком… ;)
Спасибо, не углядел. Исправил.
Ну я сразу сказал, что конкретики не будет. Википедию никто не отменял. Там можно почитать, зачем паттерны нужны. Цели статьи были другими.
А вот за более раскрытые замечания был бы признателен. Где именно я перепутал разные паттерны?
Большое спасибо! Статья была переработана.
Но это для этого примера. Тут простое дерево. Обычно деревья более мудрёные… Таблицы нормализованные, данные разбиты на несколько таблиц… Поэтому и эффект такой оптимизации чувствуется ещё сильней.
EXPLAIN PLAN FOR
SELECT *
  FROM object
    WHERE type = 'city'
    START WITH id = 1 CONNECT BY PRIOR id = parent_id;

---------------------------------------------------------------------------------------------------
| Id  | Operation                                | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                         |        |     5 |   825 |     4  (25)| 00:00:01 |
|*  1 |  FILTER                                  |        |       |       |            |          |
|*  2 |   CONNECT BY NO FILTERING WITH START-WITH|        |       |       |            |          |
|   3 |    TABLE ACCESS FULL                     | OBJECT |     5 |   825 |     3   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------

EXPLAIN PLAN FOR
SELECT *
  FROM object
    WHERE type = 'country'
    START WITH id = 5 CONNECT BY PRIOR parent_id = id;

--------------------------------------------------------------------------------------------
| Id  | Operation                      | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT               |           |     2 |   330 |     7  (29)| 00:00:01 |
|*  1 |  FILTER                        |           |       |       |            |          |
|*  2 |   CONNECT BY WITH FILTERING    |           |       |       |            |          |
|   3 |    TABLE ACCESS BY INDEX ROWID | OBJECT    |     1 |   165 |     2   (0)| 00:00:01 |
|*  4 |     INDEX UNIQUE SCAN          | PK_OBJECT |     1 |       |     1   (0)| 00:00:01 |
|   5 |    NESTED LOOPS                |           |     1 |   178 |     3   (0)| 00:00:01 |
|   6 |     CONNECT BY PUMP            |           |       |       |            |          |
|   7 |     TABLE ACCESS BY INDEX ROWID| OBJECT    |     1 |   165 |     1   (0)| 00:00:01 |
|*  8 |      INDEX UNIQUE SCAN         | PK_OBJECT |     1 |       |     0   (0)| 00:00:01 |
--------------------------------------------------------------------------------------------

EXPLAIN PLAN FOR
SELECT *
  FROM object_fast
    WHERE parent_id = 1 AND object_type = 'city';

-------------------------------------------------------------------------------------------------------
| Id  | Operation                      | Name                 | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT               |                      |     2 |   660 |     2   (0)| 00:00:01 |
|*  1 |  MAT_VIEW ACCESS BY INDEX ROWID| OBJECT_FAST          |     2 |   660 |     2   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN             | OBJECT_FAST_OBJ_TYPE |     6 |       |     1   (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------------
 
EXPLAIN PLAN FOR
SELECT *
  FROM object_fast
    WHERE object_id = 5 AND parent_type = 'country';

-----------------------------------------------------------------------------------------------------
| Id  | Operation                      | Name               | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT               |                    |     1 |   330 |     2   (0)| 00:00:01 |
|*  1 |  MAT_VIEW ACCESS BY INDEX ROWID| OBJECT_FAST        |     1 |   330 |     2   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN             | OBJECT_FAST_OBJ_ID |     3 |       |     1   (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------------
Как быстрая подсказка по функциям пойдёт… Но если сравнивать с первоисточниками, то откровенно не хватает комментариев. Взять хоть тот же официальный мануал по php. Там столько полезной информации можно почитать под основным описанием…
Не спрашивай их про это… Это больная тема… ))))
И ещё па слов про работу с БД…
Oracle… Создал материализованную вьюху… А в дереве она определяется, как таблица… Подозреваю, что проблема может быть не только с MV.
Кстати, не помешало бы делать сразу SELECT * на какое-нибудь количество строк прям из дерева таблиц. Не то, чтобы мне сложно набирать запросы руками, но иногда экономия даже пяти секунд очень приятна…
А почему в гите при невозможности запушить ветку (например, после ребэйза с другой веткой), предлагаются только два варианта — merge и rebase?? А как быть, если я хочу перетереть ветку на сервере (git push -f)??
Подскажите, а когда появится поддержка Live Edit в Firefox??
А SQL можно выполнять только из соответствующей консоли?? Или из файла *.sql тоже как-то можно?? А то напрягает всё время перетаскивать код между вкладками…
Особенно порадовал редактор баз данных! Хотя многого в нём пока не хватает… Хотелось бы навсегда выкинуть Oracle SQL Developer и работать с базой прям из PhpStorm'а…
Кстати, подскажите, а можно как-нибудь группировать дерево БД?? А то там вперемешку всё элементы — таблицы, вьюхи, сиквенсы и прочее…

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity