修改密码

请输入密码
请输入密码 请输入8-64长度密码 和 email 地址不相同 至少包括数字、大写字母、小写字母、半角符号中的 3 个
请输入密码
提交

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

服务器的MAC地址

Please complete this required field.

Please complete this required field.

取消
申请
ID
产品
状态
核数
申请天数
审批时间
过期时间
MAC地址
申请理由
审核信息
关闭
基础信息
  • 用户昵称:
  • 手机号:
  • 公司名称:
  • 公司邮箱:
  • 地区:
  • 语言:
修改密码
申请证书

当前未申请证书.

申请证书
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

ProductName CreateTime ID Price File
ProductName CreateTime ID Price File

No Invoice

v5.0
搜索
    v5.0

      索引

      概述

      索引,即属性索引,是嬴图采用的一种技术,通过为点和边的指定属性创建索引来加速查询性能。数据库根据有索引的属性能够快速定位并获取数据。索引对大型数据集尤其有益,无需扫描全图即可优化对特定属性值的过滤。

      索引类型

      嬴图支持对单个属性应用单一索引,对同一schema下的多个属性应用复合索引

      显示索引

      显示当前图集的索引信息:

      // 显示所有索引
      show().index() 
      
      // 显示所有点索引
      show().node_index()
      
      // 显示所有边索引
      show().edge_index()
      

      索引信息展示在表_nodeIndex_edgeIndex中。表中各字段提供了索引的基础信息:

      字段
      描述
      id 索引ID
      name 索引名称
      properties 索引关联属性
      schema 索引关联属性所在schema
      status 索引当前状态,包括DONECREATING

      创建索引

      使用单个create()语句可创建一或多个索引。串联使用node_index()edge_index()方法可指定每个索引。请注意,每个属性只能有一个索引。索引创建操作以作业形式进行,稍后可使用show().job(<id?>)确认索引是否成功创建。

      为提升查询性能,嬴图中的系统属性已完成优化,具有内建效率。不过这些属性不支持额外索引。

      create()
        .node_index(@<schema>.<property>(<length?>), "<indexName>")
        .edge_index(@<schema>.<property>(<length?>), "<indexName>")
        .node_index(@<schema>(<property1>(<length1?>), <property2>(<length2?>), ...), "<indexName>")
        .edge_index(@<schema>(<property1>(<length1?>), <property2>(<length2?>), ...), "<indexName>")
        ...
      
      方法 参数 描述
      node_index()edge_index() @<schema>.<property>(<length?>)@<schema>(<property1>(<length1?>), <property2>(<length2?>),...) 对于单一索引,使用@<schema>.<property>指定属性和schema

      对于复合索引,使用@<schema>(<property1>, <property2>,...)列举同一schema下的多个属性

      对于这两种索引类型,如果属性类型为stringtext,需指定搜索时为了使用索引能够使用的最大字符串长度[1],从而避免索引长文本时可能出现的性能降级情况
      <indexName> 索引名称。点索引不可重名,边索引也不可重名,但点索引可以和边索引重名

      [1] 一个中文字符的长度为3。

      为点属性@card.balance创建单一索引balance

      create().node_index(@card.balance, "balance")
      

      为边属性@card.namestring类型)创建单一索引cName,并限制最大查询字符串长度为10

      create().edge_index(@card.name(10), "cName")
      

      为边@transfer的属性amountnotestext类型,限制最大查询字符串长度为10)创建复合索引transAmountNotes

      create().edge_index(@transfer(amount, notes(10)), "transAmountNotes")
      

      创建多个索引:

      create()
        .node_index(@card.balance, "balance")
        .edge_index(@transfer(amount, notes(10)), "transAmountNotes")
      

      删除索引

      使用单个drop()语句可删除一或多个索引。串联使用node_index()edge_index()方法可指定每个索引。删除索引不会影响存储在分片中的真实属性值。不过删除属性会自动删除相关索引。

      删除点索引balance

      drop().node_index("balance")
      

      删除边索引transAmountNotes

      drop().edge_index("transAmountNotes")
      

      删除多个索引:

      drop().node_index("balance").edge_index("transAmountNotes")
      

      使用索引

      当查询过滤用到相关属性时,系统会自动应用索引,无需显式声明。

      最左前缀原则

      复合索引中属性的顺序非常重要:匹配到索引最左侧属性(即指定顺序里的首个属性或前几个属性)的查询会因此受益。

      例如:

      create().node_index(@user(name(10),age), 'name_age')
      
      • find().nodes({@user.name == "Kavi" && @user.age > 20})使用了索引。
      • find().nodes({@user.name == "Kavi"})使用了索引。
      • find().nodes({@user.age > 20})未使用索引。
      • find().nodes({@user.name == "Kavi" && @user.age > 20 && @user.grade == 7})使用了索引,同时包含对属性@user.grade的过滤,但该属性没有索引。

      字符串长度限制

      对于stringtext类型属性的索引,需确保过滤字符串的长度未超过指定上限。

      例如:

      create().edge_index(@user.name(8), "Username")
      

      以下查询不会使用索引Username,因为指定的字符串超过了8字符的限制:

      find().nodes({@user.name == "Aventurine"}) as n return n
      
      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写