小编use*_*510的帖子

即使在使用索引且只有一行时,Mysql 也使用文件排序

我有两个表 app 和 pricehistory app 上有一个主索引 ID,它是 pricehistory 上的 int 我有两个字段 id_app (int)、price(float) 和 dateup (date) 以及“id_app, dateup”上的唯一索引

我正在尝试获取应用程序的最新(日期)价格:

select app.id,
       (  select price 
          from pricehistory 
          where id_app=app.id 
          order by dateup desc limit 1) 
from app 
where id=147
Run Code Online (Sandbox Code Playgroud)

解释选择有点奇怪,因为它返回 1 行但它仍然进行文件排序:

id  select_type        table        type   possible_keys            key      key_len   ref     rows  Extra      
1   PRIMARY            app          const  PRIMARY                  PRIMARY     4      const      1   
2   DEPENDENT SUBQUERY pricehistory ref    id_app,id_app_2,id_app_3 id_app      4      const      1  Using where; Using filesort
Run Code Online (Sandbox Code Playgroud)

为什么只有 1 行时需要文件排序?以及为什么在我索引所需的所有文件时进行文件排序(id_app 和 dateup)

应用程序有 …

mysql indexing innodb greatest-n-per-group

5
推荐指数
1
解决办法
1567
查看次数

Wikidata api 如何根据维基百科页面 id 获取一些属性

所以我有这个页面 ID 12517871:https ://fr.wikipedia.org/wiki ? curid = 12517871

我想从这里的底部获取标识符https://www.wikidata.org/wiki/Q64007200

使用 sparql,但我不知道该怎么做。

我知道我必须使用类似的东西

    SELECT ?sitelink ?itemLabel ?sitelinkLabel ?article ?cid WHERE {
  ?sitelink schema:isPartOf <https://fr.wikipedia.org/>.
}
Run Code Online (Sandbox Code Playgroud)

但后来我不知道如何按页面 id 搜索以及如何获取标识符(imdb、allocine ..)

谢谢

编辑:我正在使用此查询https://w.wiki/GD5但它随机不返回任何内容。要测试这种随机性,请更改“限制”上的数字

SELECT ?propertyclaim ?value ?item WHERE {
  hint:Query hint:optimizer "None" .
  SERVICE wikibase:mwapi {
    bd:serviceParam wikibase:endpoint "fr.wikipedia.org" .
    bd:serviceParam wikibase:api "Generator" .
    bd:serviceParam mwapi:generator "revisions" .
    bd:serviceParam mwapi:pageids "12148688" .
    ?item_ wikibase:apiOutputItem mwapi:item .
    bd:serviceParam wikibase:limit 3
  }
  BIND (COALESCE(?item_, " ") AS ?item) 
  ?item ?propertyclaim ?value …
Run Code Online (Sandbox Code Playgroud)

wikipedia sparql wikidata

2
推荐指数
1
解决办法
304
查看次数