开发指南—常见问题—INDEX HINT

简介: PolarDB-X支持全局二级索引(Global Secondary Index,简称GSI) ,您可以通过INDEX HINT命令指定从GSI中获取查询结果。

使用限制

INDEX HINT仅对SELECT语句生效。

注意事项

PolarDB-X自定义HINT支持/*+TDDL:hint_command*//!+TDDL:hint_command*/两种格式。若使用/*+TDDL:hint_command*/格式时,在使用MySQL 官方命令行客户端执行带有PolarDB-X自定义HIN的SQL时,请在登录命令中加上-c参数,否则由于PolarDB-X自定义HINT是以MySQL注释形式使用的,该客户端会将注释语句删除后再发送到服务端执行,导致PolarDB-X自定义HINT失效,详情请参见MySQL官方客户端命令

语法

PolarDB-X支持如下两种语法INDEX HINT:

  • FORCE INDEX():语法与MySQL FORCE INDEX相同,若指定的索引不是GSI,则会将FORCE INDEX下发到MySQL上执行。
# FORCE INDEX()
tbl_name [[AS] alias] [index_hint]
index_hint:
    FORCE INDEX({index_name})
  • INDEX(): 通过表名和索引名组合或表在当前查询块中的别名和索引名组合来使用指定的GSI。
# INDEX()

/*+TDDL:
INDEX({table_name | table_alias}, {index_name})
*/
  • 说明上述语句在以下情况中不会生效:
    • 查询中不存在指定的表名或别名。
    • 指定的索引不是指定表上的GSI。

示例


CREATE TABLE t_order (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`order_id` varchar(20) DEFAULT NULL,
`buyer_id` varchar(20) DEFAULT NULL,
`seller_id` varchar(20) DEFAULT NULL,
`order_snapshot` longtext DEFAULT NULL,
`order_detail` longtext DEFAULT NULL,
PRIMARY KEY (`id`),
GLOBAL INDEX `g_i_seller`(`seller_id`) dbpartition by hash(`seller_id`),
UNIQUE GLOBAL INDEX `g_i_buyer` (`buyer_id`) COVERING(`seller_id`, `order_snapshot`)
dbpartition by hash(`buyer_id`) tbpartition by hash(`buyer_id`) tbpartitions 3
) ENGINE=InnoDB DEFAULT CHARSET=utf8 dbpartition by hash(`order_id`);
  • 在FROM子句中通过FORCE INDEX指定使用g_i_seller
SELECT a.*, b.order_id
FROM t_seller a
JOIN t_order b FORCE INDEX(g_i_seller) ON a.seller_id = b.seller_id
WHERE a.seller_nick="abc";
  • 通过INDEX加上表的别名指定使用g_i_buyer
/+TDDL:index(a, g_i_buyer)/ SELECT * FROM t_order a WHERE a.buyer_id = 123
相关文章
|
5月前
|
网络协议 Ubuntu Linux
Wireguard in Linux的安装方法
本文介绍了如何在Ubuntu和Rocky Linux中安装配置WireGuard,并探讨了配置过程中可能出现的DNS泄露问题及解决方法,包括通过nmtui设置DNS及调整DNS优先级参数。
|
敏捷开发 数据可视化 项目管理
2024年最强的5大需求管理工具有哪些?如何选择最适合的需求管理软件?
随着项目管理和产品开发复杂性的增加,需求管理成为团队成功的关键。本文推荐5款需求管理工具:板栗看板、ProdPad、Craft.io、Airfocus和Targetprocess,分别适用于任务分配、产品规划、需求捕捉、优先级管理和敏捷开发等场景,帮助团队提高协作效率和交付质量。
 2024年最强的5大需求管理工具有哪些?如何选择最适合的需求管理软件?
|
消息中间件 JSON 缓存
如何设计 API 接口,实现统一格式返回?
如何设计 API 接口,实现统一格式返回?
如何设计 API 接口,实现统一格式返回?
|
弹性计算 运维 Kubernetes
“1小时深度解读SaaS应用系统设计”技术分享
随着云原生技术的不断完善和发展,云原生技术及架构在架构演进、技术选型、构建现代化应用等工作中产生了深刻的影响。在企业上云的趋势下,越来越多的企业和开发者开始把业务与技术向云原生演进。在技术栈选型上,企业也趋向于容器化、微服务化以及基于云化应用中间件、数据库构建应用。
5731 0
“1小时深度解读SaaS应用系统设计”技术分享
|
存储 安全 程序员
阿里 Teambition 网盘测评|免费也能快到飞起
你想要的是一款不限速、不打扰、够安全、易于协作的网盘?这些需求都会被满足,但这样还不够,要让你的每一次使用都充满惊喜和愉悦。
682 0
阿里 Teambition 网盘测评|免费也能快到飞起
|
分布式计算 开发工具 计算机视觉
ps,pr ,ae,dw等软件简短解析(含安装包)
Adobe photoshop 专长在于图像处理,而不是图形创作 平面设计是Photoshop应用最为广泛的领域,
|
弹性计算
阿里云服务器一次购买三年的好处、优惠政策及具体价格介绍
本文介绍了在购买阿里云服务器时一次购买三年有什么优惠政策,选择三年时长有什么好处及三年具体价格等信息。
1597 0
阿里云服务器一次购买三年的好处、优惠政策及具体价格介绍
|
机器学习/深度学习 弹性计算 自然语言处理
不破不立!为什么说浪潮iGIX是真正属于大型企业的中台?
不破不立!为什么说浪潮iGIX是真正属于大型企业的中台?
728 0
不破不立!为什么说浪潮iGIX是真正属于大型企业的中台?