Manual:Langlinks table

langlinks table tracks interlanguage links.

This table is used for displaying pages, as a quick means to find the links that typically appear in the left margin, underneath the navigational and toolbox links. Without this table, MediaWiki would have to parse through the wikitext for each page display. (But it has to do this anyway, doesn't it?) The table has a primary key on page (ll_from) and target language (ll_lang), so each page can only store one link per language.

The table has three columns: ll_from (an integer), ll_lang (10 characters), ll_title (255 characters). If the wiki page "Sweden" contains the interlanguage link Suède, then ll_from will indicate the page Sweden where the link goes from, ll_lang will be "fr" and ll_title will be "Suède". In February 2009 for the Swedish language Wikipedia, this table has 3.2 million rows, of which 145,000 (4.5 %) have ll_lang "fr".

As a side effect of having this table, you can:
 * Find out which are the most popular target languages:
 * Find out which pages have the most interlanguage links: (But then you would need to translate ll_from into useful page names.)
 * Interlanguage link statistics are included in the monthly Wikipedia statistics.

Note:
 * Interlanguage links are often referred to as interwiki links. For example, interlanguage links are updated by so-called "interwiki bots". While this table can have millions of rows, the interwiki table typically only has a few hundred.
 * ll_title is a single varchar string, to be used in the URL on the target language wiki. This table alone is not sufficient to determine if that link is unique, since it could lead to a redirect or a namespace alias. For example, the interlanguage links fr:Catégorie:Suède and fr:Category:Suède are synonymous even though the namespace is spelled differently.

ll_from
page_id of the referring page.

ll_lang
Language code of the target.

ll_title
Title of the target, including namespace (FULLPAGENAMEE style).

Versions
mysql> describe langlinks; +--+--+--+-+-+---+ +--+--+--+-+-+---+ +--+--+--+-+-+---+
 * Field   | Type             | Null | Key | Default | Extra |
 * ll_from | int(10) unsigned | NO   | PRI | 0       |       |
 * ll_lang | varbinary(20)    | NO   | PRI |         |       |
 * ll_title | varbinary(255)  | NO   |     |         |       |

+--+--+--+-+-+---+ +--+--+--+-+-+---+ +--+--+--+-+-+---+
 * Field   | Type             | Null | Key | Default | Extra |
 * ll_from | int(10) unsigned | NO   |     | 0       |       |
 * ll_lang | varbinary(20)    | NO   |     |         |       |
 * ll_title | varbinary(255)  | NO   |     |         |       |

+--+--+--+-+-+---+ +--+--+--+-+-+---+ +--+--+--+-+-+---+
 * Field   | Type             | Null | Key | Default | Extra |
 * ll_from | int(11) unsigned | NO   | UNI | 0       |       |
 * ll_lang | varbinary(20)    | NO   | MUL |         |       |
 * ll_title | varchar(255)    | NO   |     |         |       |

+--+-+--+-+-+---+ +--+-+--+-+-+---+ +--+-+--+-+-+---+
 * Field   | Type            | Null | Key | Default | Extra |
 * ll_from | int(8) unsigned | NO   | PRI | 0       |       |
 * ll_lang | varchar(10)     | NO   | PRI | NULL    |       |
 * ll_title | varchar(255)   | NO   |     | NULL    |       |