官术网_书友最值得收藏!

Understanding simple queries and the cost model

In this section, we will get started with indexes. To understand how things work, some test data is needed. The following code snippet shows how data can be created easily:

test=# DROP TABLE IF EXISTS t_test;
DROP TABLE
test=# CREATE TABLE t_test (id serial, name text);

CREATE TABLE
test=# INSERT INTO t_test (name) SELECT 'hans'
FROM generate_series(1, 2000000);
INSERT 0 2000000
test=# INSERT INTO t_test (name) SELECT 'paul'
FROM generate_series(1, 2000000);
INSERT 0 2000000

In the first line, a simple table is created. Two columns are used; the first is an auto-increment column that just keeps creating numbers, and the second is a column that will be filled with static values.

The   generate_series  function will generate numbers from 1 to 2 million. So, in this example, 2 million static values for   hans  and 2 million static values for   paul  are created.

In all, 4 million rows have been added:

test=# SELECT name, count(*) FROM t_test GROUP BY 1; 
name | count ------+--------- hans | 2000000 paul | 2000000 (2 rows)

These 4 million rows have some nice properties, which we will be using throughout this chapter. IDs are ascending, and there are only two distinct names.

Let's run a simple query:

test=# \timing 
Timing is on. 
test=# SELECT * FROM t_test WHERE id = 432332;
id | name --------+------ 432332 | hans (1 row)
Time: 176.949 ms

In this case, the timing command will tell psql to show the runtime of a query.

This is not the real execution time on the server, but the time measured by psql. In the event of very short queries, network latency can be a substantial part of the total time, so this has to be taken into account.
主站蜘蛛池模板: 浦县| 太白县| 石台县| 建瓯市| 新乡市| 大名县| 盐津县| 武宣县| 张北县| 如东县| 仁化县| 刚察县| 龙海市| 奉节县| 潞城市| 南昌县| 定边县| 平阴县| 赤水市| 万安县| 蕲春县| 中江县| 公主岭市| 天台县| 城口县| 横峰县| 合山市| 巴东县| 寻乌县| 鞍山市| 泗阳县| 手机| 集安市| 崇礼县| 安仁县| 句容市| 白城市| 和政县| 竹山县| 黑龙江省| 桃园县|