优化 MYSQL Select 大型 table 查询

Optimize MYSQL Select query in large table

鉴于 table:

CREATE TABLE `sample` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `vendorid` VARCHAR(45) NOT NULL,
    `year` INT(10) NOT NULL,
    `title` TEXT NOT NULL,
    `description` TEXT NOT NULL
    PRIMARY KEY (`id`) USING BTREE
)

Table 规模:超过 700 万除了 id.

,所有字段都不是唯一的

简单查询:

SELECT * FROM sample WHERE title='milk'

需要 45 到 60 秒才能完成。

尝试在标题和描述中添加唯一索引,但出现 1170 错误。

我该如何优化它?非常感谢您的建议。

TEXT 列需要 prefix indexes -- 不可能索引它们的全部内容;它们可能太大了。而且,如果列值不唯一,则不要使用 UNIQUE 索引;他们不会工作。

试试这个:

ALTER TABLE simple ADD INDEX title_prefix (title(64));

专业提示 对于需要在 WHERE 语句中使用的列,请尽量使用 VARCHAR(n),其中 n 小于 768。避免 TEXT 和其他 blob types 除非你绝对需要它们;它们会导致您的数据库服务器运行效率低下。