Manual:Page table/zh

page表可以称为“wiki的核心”. MediaWiki中的每一个页面都在这张表中有一条使用标题作为标识的记录（entry），包含基本元数据. 这张表第一次被引入是在r6710，MediaWiki1.5的版本中.

页面中的文字存储在表中. 查找条目时，MediaWiki首先在page表中的page_title字段进行搜寻. Then, page_latest is used to search the table for, and  is obtained in the process. The value obtained for is used to search for  in the text table to retrieve the text. 删除页面后，修订将移动到表.

page_id
唯一标识主键值 这个值会在所有编辑与移动操作中保持.

Page IDs do not change when pages are moved, but they may change when pages are deleted and then restored. As of MediaWiki 1.27, the historical page ID is persisted in the archive table, and restored pages attempt to reclaim their old page ID.

MediaWiki 提供许多相关工具：

For example, Special:Redirect/page/, redirects to the present page. For example, [///w/index.php?curid= /w/index.php?curid=] will load the present page.
 * The page ID of any page (except special pages) can be looked up in the "page information" link from the Tools menu.
 * The magic word can be used to return the page id of a page.
 * The special page Special:Redirect can be used to access pages via their page IDs.
 * index.php accepts the parameter  to access pages via their page IDs.

There are also many API features that either return the page ID or use it as an input. For example, for the present page,, see https://www.mediawiki.org/w/api.php?action=query&prop=info&titles=Manual:Page%20table and https://www.mediawiki.org/w/api.php?action=query&prop=info&pageids=10501. This field can be accessed by,  , etc.

page_namespace
页面名称被分解为命名空间和标题. The namespace keys are UI-language-independent constants, defined in.

此字段包含页面的命名空間编号 The values range from 0 to 99 for the core namespaces, and from 100 to 10,000 for custom namespaces.

page_title
The sanitized page title, without the namespace, with a maximum of 255 characters (binary). 它能存储为文本，並將空格替换为下划线. The real title shown in articles is just this title with underscores (_) converted to spaces. For example, a page titled "Talk:Foo Bar" would have "Foo_Bar" in this field.

page_restrictions
Comma-separated set of permission keys indicating who can move or edit the page. Edit and move sections are separated by a colon (e.g., "edit=autoconfirmed,sysop:move=sysop").

page_counter
Number of times the page has been viewed. This feature was completely removed in MediaWiki 1.25, following a request for comment. 在此之前，许多网站，包括维基媒体项目禁用它，以提高性能;有关详细信息， 请参阅.

page_is_redirect
A value of   here indicates the article is a redirect; it is   in all other cases.

page_is_new
This field stores whether the page is a new, meaning it either has only one revision or has not been edited since being restored, even if there is more than one revision. If the field contains a value of  , then it indicates that the page is a new; otherwise, it is  . links are not displayed if the page is new, since there is nothing to roll back to.

page_random
Random decimal value, between 0 and 1, used for Special:Random (see for more details). 由產生

Around 2005, a bug caused these random values to be non-uniform. Since the field is set at page creation, wikis that have existed for a long time might still have some of these erroneous values. See T208909.

page_touched
This timestamp is updated whenever the page changes in a way requiring it to be re-rendered, invalidating caches. 除了编辑之外，还包括权限更改、链接页面的创建或删除以及包含模板的更改. 在创建页面时设置.

page_links_updated
This timestamp is updated whenever a page is re-parsed and it has all the link tracking tables updated for it. This is useful for de-duplicating expensive backlink update jobs. Set to the default value of NULL when the page is created by WikiPage::insertOn.

page_latest
This is a foreign key to rev_id for the current revision. It may be 0 during page creation. It needs to link to a revision with a valid, or there will be the "The revision #0 of the page named 'Foo' does not exist" error when one tries to view the page. Can be obtained via.

page_len
Uncompressed length in bytes of the page's current source text.

This however, does not apply to images which still have records in this table. Instead, the uncompressed length in bytes of the  for the file is used as the latter is in the   field.

The  class in   has two methods, viz.,   and   that are responsible for populating these details.

page_content_model
Content model, see CONTENT_MODEL_XXX constants. Comparable to.

page_lang
Page content language. Set to the default value of NULL at the time of page creation.

架构摘要
++-+--+-+++ ++-+--+-+++ ++-+--+-+++
 * Field             | Type                | Null | Key | Default        | Extra          |
 * page_id           | int(10) unsigned    | NO   | PRI | NULL           | auto_increment |
 * page_namespace    | int(11)             | NO   | MUL | NULL           |                |
 * page_title        | varbinary(255)      | NO   |     | NULL           |                |
 * page_restrictions | tinyblob            | YES  |     | NULL           |                |
 * page_is_redirect  | tinyint(3) unsigned | NO   | MUL | 0              |                |
 * page_is_new       | tinyint(3) unsigned | NO   |     | 0              |                |
 * page_random       | double unsigned     | NO   | MUL | NULL           |                |
 * page_touched      | binary(14)          | NO   |     |                |                |
 * page_links_updated | varbinary(14)      | YES  |     | NULL           |                |
 * page_latest       | int(10) unsigned    | NO   |     | NULL           |                |
 * page_len          | int(10) unsigned    | NO   | MUL | NULL           |                |
 * page_content_model | varbinary(32)      | YES  |     | NULL           |                |
 * page_lang         | varbinary(35)       | YES  |     | NULL           |                |

++-+--+-+++ ++-+--+-+++ ++-+--+-+++
 * Field             | Type                | Null | Key | Default        | Extra          |
 * page_id           | int(10) unsigned    | NO   | PRI | NULL           | auto_increment |
 * page_namespace    | int(11)             | NO   | MUL | NULL           |                |
 * page_title        | varbinary(255)      | NO   |     | NULL           |                |
 * page_restrictions | tinyblob            | NO   |     | NULL           |                |
 * page_is_redirect  | tinyint(3) unsigned | NO   | MUL | 0              |                |
 * page_is_new       | tinyint(3) unsigned | NO   |     | 0              |                |
 * page_random       | double unsigned     | NO   | MUL | NULL           |                |
 * page_touched      | binary(14)          | NO   |     |                |                |
 * page_links_updated | varbinary(14)      | YES  |     | NULL           |                |
 * page_latest       | int(10) unsigned    | NO   |     | NULL           |                |
 * page_len          | int(10) unsigned    | NO   | MUL | NULL           |                |
 * page_content_model | varbinary(32)      | YES  |     | NULL           |                |
 * page_lang         | varbinary(35)       | YES  |     | NULL           |                |

++-+--+-+-++ ++-+--+-+-++ ++-+--+-+-++
 * Field             | Type                | Null | Key | Default | Extra          |
 * page_id           | int(10) unsigned    | NO   | PRI | NULL    | AUTO_INCREMENT |
 * page_namespace    | int(11)             | NO   | MUL | NULL    |                |
 * page_title        | varchar(255) binary | NO   |     | NULL    |                |
 * page_restrictions | tinyblob            | NO   |     | NULL    |                |
 * page_counter      | bigint(20) unsigned | NO   |     | 0       |                |
 * page_is_redirect  | tinyint(3) unsigned | NO   | MUL | 0       |                |
 * page_is_new       | tinyint(3) unsigned | NO   |     | 0       |                |
 * page_random       | real unsigned       | NO   | MUL | NULL    |                |
 * page_touched      | binary(14)          | NO   |     | NULL    |                |
 * page_links_updated | varbinary(14)      | YES  |     | NULL    |                |
 * page_latest       | int(10) unsigned    | NO   |     | NULL    |                |
 * page_len          | int(10) unsigned    | NO   | MUL | NULL    |                |
 * page_content_model | varbinary(32)      | YES  |     | NULL    |                |
 * page_lang         | varbinary(35)       | YES  |     | NULL    |                |

++-+--+-+-++ ++-+--+-+-++ ++-+--+-+-++
 * Field             | Type                | Null | Key | Default | Extra          |
 * page_id           | int(10) unsigned    | NO   | PRI | NULL    | AUTO_INCREMENT |
 * page_namespace    | int(11)             | NO   | MUL | NULL    |                |
 * page_title        | varchar(255) binary | NO   |     | NULL    |                |
 * page_restrictions | tinyblob            | NO   |     | NULL    |                |
 * page_counter      | bigint(20) unsigned | NO   |     | 0       |                |
 * page_is_redirect  | tinyint(3) unsigned | NO   | MUL | 0       |                |
 * page_is_new       | tinyint(3) unsigned | NO   |     | 0       |                |
 * page_random       | real unsigned       | NO   | MUL | NULL    |                |
 * page_touched      | binary(14)          | NO   |     | NULL    |                |
 * page_links_updated | varbinary(14)      | YES  |     | NULL    |                |
 * page_latest       | int(10) unsigned    | NO   |     | NULL    |                |
 * page_len          | int(10) unsigned    | NO   | MUL | NULL    |                |
 * page_content_model | varbinary(32)      | YES  |     | NULL    |                |

++-+--+-+-++ ++-+--+-+-++ ++-+--+-+-++
 * Field             | Type                | Null | Key | Default | Extra          |
 * page_id           | int(10) unsigned    | NO   | PRI | NULL    | AUTO_INCREMENT |
 * page_namespace    | int(11)             | NO   | MUL | NULL    |                |
 * page_title        | varchar(255) binary | NO   |     | NULL    |                |
 * page_restrictions | tinyblob            | NO   |     | NULL    |                |
 * page_counter      | bigint(20) unsigned | NO   |     | 0       |                |
 * page_is_redirect  | tinyint(3) unsigned | NO   | MUL | 0       |                |
 * page_is_new       | tinyint(3) unsigned | NO   |     | 0       |                |
 * page_random       | real unsigned       | NO   | MUL | NULL    |                |
 * page_touched      | binary(14)          | NO   |     | NULL    |                |
 * page_latest       | int(10) unsigned    | NO   |     | NULL    |                |
 * page_len          | int(10) unsigned    | NO   | MUL | NULL    |                |
 * page_content_model | varbinary(32)      | YES  |     | NULL    |                |

+---+-+--+-+-++ +---+-+--+-+-++ +---+-+--+-+-++
 * Field            | Type                | Null | Key | Default | Extra          |
 * page_id          | int(10) unsigned    | NO   | PRI | NULL    | AUTO_INCREMENT |
 * page_namespace   | int(11)             | NO   | MUL | NULL    |                |
 * page_title       | varchar(255) binary | NO   |     | NULL    |                |
 * page_restrictions | tinyblob           | NO   |     | NULL    |                |
 * page_counter     | bigint(20) unsigned | NO   |     | 0       |                |
 * page_is_redirect | tinyint(3) unsigned | NO   | MUL | 0       |                |
 * page_is_new      | tinyint(3) unsigned | NO   |     | 0       |                |
 * page_random      | real unsigned       | NO   | MUL | NULL    |                |
 * page_touched     | binary(14)          | NO   |     | NULL    |                |
 * page_latest      | int(10) unsigned    | NO   |     | NULL    |                |
 * page_len         | int(10) unsigned    | NO   | MUL | NULL    |                |

+---+-+--+-+-++ +---+-+--+-+-++ +---+-+--+-+-++
 * Field            | Type                | Null | Key | Default | Extra          |
 * page_id          | int(10) unsigned    | NO   | PRI | NULL    | AUTO_INCREMENT |
 * page_namespace   | int(11)             | NO   | MUL | NULL    |                |
 * page_title       | varchar(255) binary | NO   |     | NULL    |                |
 * page_restrictions | tinyblob           | NO   |     | NULL    |                |
 * page_counter     | bigint(20) unsigned | NO   |     | 0       |                |
 * page_is_redirect | tinyint(3) unsigned | NO   |     | 0       |                |
 * page_is_new      | tinyint(3) unsigned | NO   |     | 0       |                |
 * page_random      | real unsigned       | NO   | MUL | NULL    |                |
 * page_touched     | binary(14)          | NO   |     | NULL    |                |
 * page_latest      | int(10) unsigned    | NO   |     | NULL    |                |
 * page_len         | int(10) unsigned    | NO   | MUL | NULL    |                |

+---+-+--+-+-++ +---+-+--+-+-++ +---+-+--+-+-++
 * Field            | Type                | Null | Key | Default | Extra          |
 * page_id          | int(8) unsigned     | NO   | PRI | NULL    | AUTO_INCREMENT |
 * page_namespace   | int(11)             | NO   | MUL | NULL    |                |
 * page_title       | varchar(255) binary | NO   |     | NULL    |                |
 * page_restrictions | tinyblob           | NO   |     | NULL    |                |
 * page_counter     | bigint(20) unsigned | NO   |     | 0       |                |
 * page_is_redirect | tinyint(1) unsigned | NO   |     | 0       |                |
 * page_is_new      | tinyint(1) unsigned | NO   |     | 0       |                |
 * page_random      | real unsigned       | NO   | MUL | NULL    |                |
 * page_touched     | char(14) binary     | NO   |     | NULL    |                |
 * page_latest      | int(8) unsigned     | NO   |     | NULL    |                |
 * page_len         | int(8) unsigned     | NO   | MUL | NULL    |                |

索引
 +---++-+--+--+---+-+--++--++-+---+ +---++-+--+--+---+-+--++--++-+---+ +---++-+--+--+---+-+--++--++-+---+
 * Table | Non_unique | Key_name                   | Seq_in_index | Column_name      | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
 * page |          0 | PRIMARY                     |            1 | page_id          | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page |          0 | name_title                  |            1 | page_namespace   | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page |          0 | name_title                  |            2 | page_title       | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page |          1 | page_random                 |            1 | page_random      | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page |          1 | page_len                    |            1 | page_len         | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page |          1 | page_redirect_namespace_len |            1 | page_is_redirect | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page |          1 | page_redirect_namespace_len |            2 | page_namespace   | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page |          1 | page_redirect_namespace_len |            3 | page_len         | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |

Listing pages and relations with other essential tables
The following code will select the most recent versions of all articles from core tables: [page, revision, text]:

其它重要考虑：


 * to find undeleted pages add
 * to find pages in namespace 0 add
 * to find pages that are not redirects add

These additional statements can be added either as conditions to a Where statement or as conditions on the appropriate Inner Join statement.

Deleting pages with their relationships in text and revision tables
The following shows the steps to run to help you delete pages and their children from the main pages in the page, revision and text tables.

Listing all related table keys

Deleting from database the rows

你应当得到如下结果

 +--+--+--+ +--+--+--+ +--+--+--+ 1 row in set (0.07 sec)
 * page                                            | revision                                         | text                                             |
 * IN(5530,5528,5529,5530,5529,5528,5532,5532,5532) | IN(9918,9921,9917,9919,9920,9916,9922,9915,9923) | IN(9918,9921,9917,9919,9920,9916,9922,9915,9923) |

Replace the concatenated id in the following query

After, you can do some cleanup using this maintenance script: