【问题标题】:Database Design: Index Varchar数据库设计:索引 Varchar
【发布时间】:2023-03-26 09:55:01
【问题描述】:

我有一个表,它的主键是一个整数,然后是一个用于按类型搜索的列,它是一个 varchar。让我们说 content_id 和 content_type。

SELECT * FROM TABLE_A WHERE content_type='abc'

varchar content_type 的长度为 255。我正在考虑将其编入索引以实现更快的 SELECT 查询。这会提高性能吗?即使它的长度为 255,如果只使用 5 个字符而不是整个 255,这会对性能产生影响吗?

【问题讨论】:

    标签: mysql sql sql-server postgresql


    【解决方案1】:

    content_type 上的索引应该使您的查询速度更快:

    select * from table_a where content_type = 'whatever';
    select * from table_a where content_type like 'whatever%';
    

    但它不会使您的查询更快:

    select * from table_a where content_type like '%whatever%';
    

    您是否只使用 255 个可用字符中的 5 个也没关系。

    【讨论】:

      【解决方案2】:

      这里有一些要点:

      • 该索引将提高您在读取查询(即 SELECT)上的性能。但是,它往往会降低写入查询(即 INSERT 和 UPDATE)的性能。当您在表中获得越来越多的记录时尤其如此。

      • 仅使用 5/255 个字符不会影响您的索引性能,足以引起注意。

      希望有帮助!

      【讨论】:

        【解决方案3】:

        想补充一点,它只会使查询在足够大的表上更快。

        在 postgres 上,varchar 仅使用实际值所需的空间,最大长度仅限制 postgres 允许您插入的内容。因此,上限为 255 不会浪费索引中的空间。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-27
          • 1970-01-01
          相关资源
          最近更新 更多