Sql ke“数据一旦在实际使用中就不会有太大的变化”倾向于使“多索引”比“少索引”更好(如果空间开销不是太大的话)。如果数据更具动态性,则索引过多是一个问题。这些考虑事项说明了为什么所有问题都没有单一答案——您必须了解适用于DB和DBMS的情况。事实上,我想到,

Sql ke“数据一旦在实际使用中就不会有太大的变化”倾向于使“多索引”比“少索引”更好(如果空间开销不是太大的话)。如果数据更具动态性,则索引过多是一个问题。这些考虑事项说明了为什么所有问题都没有单一答案——您必须了解适用于DB和DBMS的情况。事实上,我想到,,sql,sqlite,matrix,Sql,Sqlite,Matrix,ke“数据一旦在实际使用中就不会有太大的变化”倾向于使“多索引”比“少索引”更好(如果空间开销不是太大的话)。如果数据更具动态性,则索引过多是一个问题。这些考虑事项说明了为什么所有问题都没有单一答案——您必须了解适用于DB和DBMS的情况。事实上,我想到,信息可以简单地表示为一个整数,其中元音空间值为(高度*100)+(背景*10)+圆度,其中圆度为1或0。这样,查询就变得微不足道了。这个精确的公式只适用于


ke“数据一旦在实际使用中就不会有太大的变化”倾向于使“多索引”比“少索引”更好(如果空间开销不是太大的话)。如果数据更具动态性,则索引过多是一个问题。这些考虑事项说明了为什么所有问题都没有单一答案——您必须了解适用于DB和DBMS的情况。事实上,我想到,信息可以简单地表示为一个整数,其中元音空间值为(高度*100)+(背景*10)+圆度,其中圆度为1或0。这样,查询就变得微不足道了。这个精确的公式只适用于<9*9的矩阵,但我最终决定的大小是7*5。即使对于较大的矩阵,公式也只需调整10倍。一列上的单个索引就足够了。只需一次就可以修复这样的数据,这是一个多么聪明的查询编码方法啊。事实上,您的“orig.rounded”等将3个程序参数传递给查询,但在其他方面没有问题。谢谢你。虽然我对乔纳森·莱夫勒的答案投了赞成票,但我也投了赞成票,并将尝试一下。
SELECT word FROM mytable WHERE (rounded = false AND height = 2 AND backness = 3)
OR (rounded = true AND height = 2 AND (bacKness = 1 OR backness = 3))
OR (rounded = true AND backness = 2 AND (height = 1 OR height = 3))
SELECT matched.word
  FROM mytable orig, 
       mytable matched
 WHERE (
           (matched.rounded <> orig.rounded)
           +
           (abs(matched.height - orig.height) > 1) /* validate "height" */
           +
           (abs(matched.backness  - orig.backness) > 1) /* validate "backness" */
           /* + (...) add more column conditions here if you need */
       ) = 1    /* this is how many columns can be different */
SELECT word
  FROM mytable
 WHERE (rounded = false AND height = 2 AND backness = 3)
    OR (rounded = true  AND height = 2 AND (backness = 1 OR backness = 3))
    OR (rounded = true  AND backness = 2 AND (height = 1 OR height = 3))
SELECT word
  FROM mytable
 WHERE (rounded = false AND height = 2 AND backness = 3)
    OR (rounded = true  AND height = 2 AND backness = 1)
    OR (rounded = true  AND height = 2 AND backness = 3)
    OR (rounded = true  AND backness = 2 AND height = 1)
    OR (rounded = true  AND backness = 2 AND height = 3)
SELECT word
  FROM mytable
 WHERE (rounded = false AND height = 2 AND backness = 3)
    OR (rounded = true  AND height = 2 AND backness = 1)
    OR (rounded = true  AND height = 2 AND backness = 3)
    OR (rounded = true  AND height = 1 AND backness = 2)
    OR (rounded = true  AND height = 3 AND backness = 2)
SELECT word
  FROM mytable
 WHERE (rounded = false AND height = 2 AND backness = 3)
UNION
SELECT word
  FROM mytable
 WHERE (rounded = true  AND height = 2 AND backness = 1)
UNION
SELECT word
  FROM mytable
 WHERE (rounded = true  AND height = 2 AND backness = 3)
UNION
SELECT word
  FROM mytable
 WHERE (rounded = true  AND height = 1 AND backness = 2)
UNION
SELECT word
  FROM mytable
 WHERE (rounded = true  AND height = 3 AND backness = 2)