【问题标题】:how to implement this in GQL(Google Query Language)如何在 GQL(谷歌查询语言)中实现这一点
【发布时间】:2009-07-09 13:40:08
【问题描述】:

在 MySQL 中是这样的:

select * from table1 where column1 in ('a','b','c');

如何在 GQL 中做到这一点?

【问题讨论】:

  • +1 只是为了向我介绍一个新术语:-D

标签: mysql google-app-engine gql


【解决方案1】:

【讨论】:

  • 转到主应用程序引擎站点 (code.google.com/appengine)。单击“文档”,然后单击“存储数据”(在 python 标题下)。然后点击“gql参考”。
【解决方案2】:

您可以使用以下方法之一

  result = db.GqlQuery("Select __key__ from model where column in ('a','b','c')")

   result = db.GqlQuery("Select * from model where column in ('a','b','c')")

使用 _ 键 _ _ 的调用比 appengine 上的 * 调用效率高得多。它使用更少的数据存储调用以及更少的 CPU 来执行此操作。

【讨论】:

  • 如何让栏目支持全文搜索,能否提供demo?
  • 据我所知你不能。全文搜索需要数据库中的大量工作。例如,SQL Server 将其分解并存储在文件系统中,以便更快地建立索引。 TextProperty() 和 StringProperty() 列可以索引,而 Blob 样式列不能。这意味着需要大量工作来减少数据以对其进行搜索。
  • 但是gae支持全文搜索,所以一定有解决办法。
  • 在谷歌上搜索它似乎支持它,但不是很好。 class models(search.SearchableModel): text = db.TextProperty() 来搜索它你会在你的业务逻辑中做类似 model = models.all().search('searchtext') groups.google.com/group/google-appengine/browse_thread/thread/… 我确实看到了很多说它在保存对象时会触发您的 put() 调用。看起来它可能会大量使用您的数据存储!
  • 那些API隐藏了真实发生的事情,是支持全文搜索的数据存储,对吗?所以数据存储必须有一个语法来索引和进行全文搜索,但是Google 打算暂时不发布该文档。
【解决方案3】:

正如您所描述的,它工作正常 - 但请注意,IN 查询是在 Python API 中实现的,并转换为多个底层数据存储查询。如果有其他方法可以获取数据,我强烈建议您改用它。

【讨论】:

    猜你喜欢
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多