You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中TEXT字段能否创建索引?遇1170语法错误求解

问题解答

能不能给TEXT类型字段创建索引?

可以,但必须指定索引的前缀长度。TEXT属于大字段类型,MySQL无法直接为整个字段创建索引,只能取字段的前N个字符来构建索引。

错误原因分析

你遇到的SQLSTATE[42000]: Syntax error or access violation: 1170错误,根源是联合索引INDEX(conversation_id, some_id, summary)里的TEXT类型字段summary未指定索引长度。

修复后的建表代码

修改索引定义,给summary指定合适的前缀长度(示例取前50个字符,可根据业务需求调整):

CREATE TABLE conversation (
  conversation_id INT(7) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  some_id INT(7) UNSIGNED,
  summary TEXT,
  INDEX(conversation_id, some_id, summary(50))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

额外说明

  • 前缀长度的选择要平衡索引效率与区分度:长度太短可能导致索引区分度不足,太长会增加索引存储空间和维护成本。
  • 若单独给summary建索引,同样需要指定长度,比如INDEX(summary(100))。

内容的提问来源于stack exchange,提问作者ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 19:45:43