powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQLite [игнор отключен] [закрыт для гостей] / SQLite - как чиать планы
4 сообщений из 4, страница 1 из 1
SQLite - как чиать планы
    #36133387
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите доку про планы.
что означают колонки p* ?

вот пример двух запросов с агрегацией и без:
кое что понятно.... но не все
напримр, почему у одного Goto = 20, у другого = 13 :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
sqlite> EXPLAIN QUERY PLAN select max(id) from fly_hash where tth='rferferferf';
orde  from           deta
----  -------------  ----
 0       0               TABLE fly_hash WITH INDEX sqlite_autoindex_fly_hash_1 ORDER BY
sqlite> EXPLAIN select max(id) from fly_hash where tth='rferferferf';
addr  opcode         p1    p2    p3    p4             p5  comment
----  -------------  ----  ----  ----  -------------  --  -------------
 0      Trace           0       0       0                      00 
 1      Null            0       2       0                      00 
 2      Null            0       1       0                      00 
 3      String8         0       3       0      rferferferf     00 
 4      Goto            0       20      0                      00 
 5      OpenRead        1       6       0      keyinfo( 1 ,BINARY)   00 
 6      IsNull          3       15      0                      00 
 7      Affinity        3       1       0      ab              00 
 8      SeekLe          1       15      3       1                00 
 9      IdxLT           1       15      3       1                00 
 10     IdxRowid        1       5       0                      00 
 11     CollSeq         0       0       0      collseq(BINARY)   00 
 12     AggStep         0       5       1      max( 1 )          01 
 13     Goto            0       15      0                      00 
 14     Prev            1       9       0                      00 
 15     Close           1       0       0                      00 
 16     AggFinal        1       1       0      max( 1 )          00 
 17     SCopy           1       6       0                      00 
 18     ResultRow       6       1       0                      00 
 19     Halt            0       0       0                      00 
 20     Transaction     0       0       0                      00 
 21     VerifyCookie    0       25      0                      00 
 22     TableLock       0       5       0      fly_hash        00 
 23     Goto            0       5       0                      00 
sqlite> EXPLAIN select id from fly_hash where tth='rferferferf';
addr  opcode         p1    p2    p3    p4             p5  comment
----  -------------  ----  ----  ----  -------------  --  -------------
 0      Trace           0       0       0                      00 
 1      String8         0       1       0      rferferferf     00 
 2      Goto            0       13      0                      00 
 3      OpenRead        1       6       0      keyinfo( 1 ,BINARY)   00 
 4      IsNull          1       11      0                      00 
 5      Affinity        1       1       0      ab              00 
 6      SeekGe          1       11      1       1                00 
 7      IdxGE           1       11      1       1                01 
 8      IdxRowid        1       3       0                      00 
 9      ResultRow       3       1       0                      00 
 10     Next            1       7       0                      00 
 11     Close           1       0       0                      00 
 12     Halt            0       0       0                      00 
 13     Transaction     0       0       0                      00 
 14     VerifyCookie    0       25      0                      00 
 15     TableLock       0       5       0      fly_hash        00 
 16     Goto            0       3       0                      00 
sqlite>
--
~PPA() {} //
...
Рейтинг: 0 / 0
SQLite - как чиать планы
    #36133482
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Что непонятно в выводе EXPLAIN QUERY PLAN? Команда EXPLAIN нужна разработчикам движка (ну, иногда еще для проверки порядка объединения таблиц может быть использована, хотя этот порядок известен и так). Если есть желание разобраться, смотрите описание виртуальной машины, реализованной в SQLite, там все opcode есть.
...
Рейтинг: 0 / 0
SQLite - как чиать планы
    #36133623
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBG,

а как стоимость определить в общем случае?
т.е. какой запрос лучше/хуже?
...
Рейтинг: 0 / 0
SQLite - как чиать планы
    #36133684
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Стоимость выполнения запроса сама по себе не сильно интересна - важен оптимальный способ выполнения, а не стоимость возможных вариантов. Так что нужно смотреть лишь за тем, чтобы при объединениях таблиц и поиске по условию использовались индексы (как пример, "WITH INDEX sqlite_autoindex_fly_hash_1").
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / SQLite - как чиать планы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]