create table schemas ( name varchar(100), schema varchar(1000) );
INSERT INTO schemas ( name, schema ) VALUES ( 'books', '
{
"id": "integer",
"title": "string",
"price": "integer"
}
' );
INSERT INTO schemas ( name, schema ) VALUES ( 'users', '
{
"id": "integer",
"name": "string",
}
' );
INSERT INTO schemas ( name, schema ) VALUES ( 'todo', '
{
"id": "integer",
"what": "string",
"priority": "integer",
}
' );
SELECT data FROM datasets WHERE name = 'todo' and
(data->>'assignees_array')::jsonb ? 'b456e596-9028-47a0-b87a-f8b23c443eee' and
(data->>'what_string')::TEXT LIKE '%ใ%'
ORDER BY (data->>'priority_integer')::INT DESC, (data->>'id_integer')::INT;
data
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{"id_float": 1722.0, "id_string": "1722", "id_integer": 1722, "what_float": 0.0, "what_string": "ใใใใตใใใฉใใฝใใพใ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["b456e596-9028-47a0-b87a-f8b23c443eee", "bf82082f-7b61-443e-bb6d-1fa1197ce911", "f1ddbb9d-ed35-4dd4-857f-082b142a6a44"], "priority_string": "2", "priority_integer": 2}
(1 row)
SELECT data FROM datasets WHERE name = 'todo' and (data->>'what_string')::TEXT LIKE '%ใ%' ORDER BY (data->>'priority_integer')::INT DESC, (data->>'id_integer')::INT ASC LIMIT 25 OFFSET 50;
data
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{"id_float": 1179.0, "id_string": "1179", "id_integer": 1179, "what_float": 0.0, "what_string": "ใผใใใใพใฑใใใฆในใฏใ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["29f91ab9-3e40-4e01-b990-8f03d23dab50", "b3bdc369-5549-4bb6-8a19-0c9487162085", "9d665950-6c45-4b77-b1b7-de35b69de646"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1183.0, "id_string": "1183", "id_integer": 1183, "what_float": 0.0, "what_string": "ใใใใบใใใขในใใณใธใ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["b86e6da5-c799-46ba-a4ff-e6e46a5295da", "5e33425d-ce7b-4be5-b6f2-88abcba38a7c", "82aa1be5-8225-4697-ad0e-18e266d30e0c"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1202.0, "id_string": "1202", "id_integer": 1202, "what_float": 0.0, "what_string": "ใใจใใใใขใธใใใคใใ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["d8e0021c-44cb-4b35-a830-a06bf9b3d225", "74de866e-a393-4ea6-a12f-8f7365e0a124", "5a7c2827-44b6-4348-a927-bc8f27f58926"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1228.0, "id_string": "1228", "id_integer": 1228, "what_float": 0.0, "what_string": "ใฉใปใใใฌใใใใใใใบ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["620c5a08-9bcb-4f3a-9208-bf6343bedbb4", "e24e9bb0-b40f-4263-9f96-2e3f3256b8c6", "3526eb5b-2b36-4d2a-b96c-2d397c002b2e"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1245.0, "id_string": "1245", "id_integer": 1245, "what_float": 0.0, "what_string": "ใใทใใใใซใใงใใใผใถ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["852f499e-af07-45d4-9c28-576b65ff6d02", "aa4bdfa7-c233-4386-bdf5-e7533ecc1649", "9540daf3-75a7-4cc8-b67c-1b6e8592ecbe"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1257.0, "id_string": "1257", "id_integer": 1257, "what_float": 0.0, "what_string": "ใขใฅใใใใใใใใใใ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["9d455bc4-4659-4ba5-81f2-c7f4a2e586b0", "f0807e47-09a9-4a0a-8e1b-9a9942ce91ba", "4a29fce4-3111-4e9f-bacd-d5dbcc0eb303"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1264.0, "id_string": "1264", "id_integer": 1264, "what_float": 0.0, "what_string": "ใใดใใใใใฃใ ใกใใฅใช", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["0215072b-ecd6-47dc-b427-3868cbd40774", "73a20356-e05b-42fc-87e3-87b58d0bbe1d", "5069ddf2-80e0-4c77-8468-d6e7d1f0878a"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1277.0, "id_string": "1277", "id_integer": 1277, "what_float": 0.0, "what_string": "ใณใใใ ใปใฝใซใจใใใใถ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["9e3df5c9-c7cf-4694-835d-7380aa91eb75", "bb07ec3b-726e-4954-bead-dfbae05c2cde", "00a3cd96-1442-4662-bdfb-b1af6607ca37"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1290.0, "id_string": "1290", "id_integer": 1290, "what_float": 0.0, "what_string": "ใใฏใใใใตใชใใใฝใใ
", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["5e4a1c6c-f7fa-41fb-b604-392ee763aeae", "ad634976-499f-4e0c-8a3e-fb114a1efbe9", "c8d2995d-9ebb-4eb0-9e2d-6e87c117c147"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1292.0, "id_string": "1292", "id_integer": 1292, "what_float": 0.0, "what_string": "ใฝใใใฉใใใใใงใใใผ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["9bdf460f-e102-4d17-aa07-79058ff8b958", "36094664-b1d0-4127-ab51-701d3423673a", "1e44dc91-3253-4c22-b538-07d542841c73"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1294.0, "id_string": "1294", "id_integer": 1294, "what_float": 0.0, "what_string": "ใใซใณใฅใใใใใ
ใใพใ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["11c78b91-aca8-44b8-9722-3506a22a99bc", "47fc1a70-3b62-4b9b-ba4b-aa28045c3ff3", "0d8d396b-1ff1-4dc0-b64d-bcc0a5cc9432"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1350.0, "id_string": "1350", "id_integer": 1350, "what_float": 0.0, "what_string": "ใใญใใใใใขใใพในใใ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["21e7961b-6b9e-40a3-aca8-e75339ce0800", "272db317-1da1-4ee7-b29a-b594225d2538", "aa1d2601-16d6-42ac-9d3e-ee3b2d5b598d"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1373.0, "id_string": "1373", "id_integer": 1373, "what_float": 0.0, "what_string": "ใฝใฉใใทใใใใใฃใใใ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["12998a1a-b655-48bb-a76a-5f641f7998fc", "33b8ca05-90d5-4274-b267-139770f69dd5", "1fdbf432-eab5-45dd-89ea-5661f506c5c5"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1395.0, "id_string": "1395", "id_integer": 1395, "what_float": 0.0, "what_string": "ใฟใบใ ใใญใซใใใใถใฎใจ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["35b0f1bf-588a-4f31-90c1-b7bb51083c4c", "bacc5096-1c9e-4c98-90de-8067b9e70977", "87ca34b3-c743-4c24-85af-af2594ef0a0b"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1398.0, "id_string": "1398", "id_integer": 1398, "what_float": 0.0, "what_string": "ใญใซใใใตใใฆใจใใใใก", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["83567373-54c4-46f3-b669-fe97c05ff942", "e8a553dc-4d74-4f9b-8b7a-d77cd9e8238e", "73cb9978-b255-4e4d-b13d-ccd5b1d63ead"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1413.0, "id_string": "1413", "id_integer": 1413, "what_float": 0.0, "what_string": "ใใใใใฃใใธในใใใใ
", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["b3c32759-d84c-4265-969c-0da0bc8341a1", "a501d186-30b4-4675-89f5-7946373210c4", "1aeedf0b-f3ba-4d17-8b53-bfb4118da11f"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1446.0, "id_string": "1446", "id_integer": 1446, "what_float": 0.0, "what_string": "ใใใใใฅใถใใใฑใ
ใใ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["39127ce3-177e-41a1-958e-d9b591c3c2f3", "4c5c3b3f-1f3b-4df2-a47c-b799f4a27c28", "5043c0f2-2eba-485c-bcd2-0079d55683da"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1475.0, "id_string": "1475", "id_integer": 1475, "what_float": 0.0, "what_string": "ใซใใใใใ
ใใฆใฏใใใฉ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["89ac3419-caa5-4954-9286-e36cc0f2037a", "efee32be-f0b1-4e92-968f-da7f43585359", "f707230c-9b5d-4676-86ac-d3d1868f31ab"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1504.0, "id_string": "1504", "id_integer": 1504, "what_float": 0.0, "what_string": "ใฑใทใพใใใใฒใฎใซใใปใ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["b644dffb-e3a6-426d-8ce8-6cf5d32832f8", "7ed260f1-f81c-40cc-83cb-1f37cddecbc1", "7e699c2c-c77c-4934-9113-fe0a0f74c9e8"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1525.0, "id_string": "1525", "id_integer": 1525, "what_float": 0.0, "what_string": "ใฒใฅใใใใใงใใใฎใบใฝ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["47062f09-61e2-4f6e-b091-114187b5934b", "270c171c-d544-4709-b95c-5f745574b2e3", "e1505a34-b4ec-4c4c-bec8-4f58e89a8504"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1529.0, "id_string": "1529", "id_integer": 1529, "what_float": 0.0, "what_string": "ใฝใใใใใฃใธใฅใใ ใฉใ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["8c5fdf8d-4451-43a3-ae63-773244d0229c", "12e41694-c012-420b-af03-99609a578c6c", "5181e52a-7002-4bf8-9477-7e6b708c6dd3"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1561.0, "id_string": "1561", "id_integer": 1561, "what_float": 0.0, "what_string": "ใ ใใใใใใใใบใใฟใฒ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["3642b00e-6665-4584-9d3d-444d78950bed", "edeadaf0-ec36-4059-8396-0568a863b90a", "0c1dfdc2-5cce-460a-ab14-905644263fe2"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1633.0, "id_string": "1633", "id_integer": 1633, "what_float": 0.0, "what_string": "ใใใใใฐใใบใใใฌใใ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["3eaaaf69-b03b-416b-b2a9-a9a3dab10023", "2496488a-9c77-4205-b7db-d8d2ec61775a", "0befe256-17cd-481d-94e1-4df7eaa0bb7c"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1675.0, "id_string": "1675", "id_integer": 1675, "what_float": 0.0, "what_string": "ใใใใณใ ใใใญใฉใงใใ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["8d012eb9-65c4-49d1-affb-d2de330057cb", "78a37bdd-49e6-4f0c-842d-ef088cae8a07", "524fb49c-b941-459b-88e3-8cb803e771f0"], "priority_string": "2", "priority_integer": 2}
{"id_float": 1722.0, "id_string": "1722", "id_integer": 1722, "what_float": 0.0, "what_string": "ใใใใตใใใฉใใฝใใพใ", "what_integer": 0, "priority_float": 2.0, "assignees_array": ["b456e596-9028-47a0-b87a-f8b23c443eee", "bf82082f-7b61-443e-bb6d-1fa1197ce911", "f1ddbb9d-ed35-4dd4-857f-082b142a6a44"], "priority_string": "2", "priority_integer": 2}
(25 rows)
todo ใใผใใซใฎ what ใ %ใ% ใงๆค็ดขใใฆ order by priority ใใฆ 25ใใผใธๅบๅใ3ใใผใธ็ฎใๅๅพใใ SQL
EXPLAIN ANALYZE SELECT data FROM datasets WHERE name = 'todo' and
(data->>'what_string')::TEXT LIKE '%ใ%'
ORDER BY (data->>'priority_integer')::INT DESC, (data->>'id_integer')::INT ASC
LIMIT 25 OFFSET 50;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=17336.94..17339.85 rows=25 width=308) (actual time=41.854..48.218 rows=25 loops=1)
-> Gather Merge (cost=17331.10..17724.30 rows=3370 width=308) (actual time=41.822..48.213 rows=75 loops=1)
Workers Planned: 2
Workers Launched: 2
-> Sort (cost=16331.08..16335.29 rows=1685 width=308) (actual time=38.876..38.889 rows=113 loops=3)
Sort Key: (((data ->> 'priority_integer'::text))::integer) DESC, (((data ->> 'id_integer'::text))::integer)
Sort Method: quicksort Memory: 3148kB
-> Parallel Seq Scan on datasets (cost=0.00..16240.77 rows=1685 width=308) (actual time=0.023..32.369 rows=4873 loops=3)
Filter: (((name)::text = 'todo'::text) AND ((data ->> 'what_string'::text) ~~ '%ใ%'::text))
Rows Removed by Filter: 95127
Planning time: 0.058 ms
Execution time: 48.803 ms
(12 rows)
create index datasets_name_index on datasets (name);
่ฟฝๅ ใใใ