Php 使用强制转换而不是int字段的SQL

Php 使用强制转换而不是int字段的SQL,php,mysql,sql,wordpress,postgresql,Php,Mysql,Sql,Wordpress,Postgresql,在where子句中使用“string field with cast”而不是在开始时使用int field对结果进行筛选或排序时,是否会产生显著的性能结果?因为我希望meta也包含字符串值 我正在考虑在单独的表中分离meta string和meta int,或者只使用一个字符串表来转换int值 就像wp_Posteta工作一样 META TABLE == meta_id | post_id | meta_key | meta_value 1 | 101 | quantity

where
子句中使用“string field with cast”而不是在开始时使用int field对结果进行筛选或排序时,是否会产生显著的性能结果?因为我希望meta也包含字符串值

我正在考虑在单独的表中分离meta string和meta int,或者只使用一个字符串表来转换int值

就像wp_Posteta工作一样

META TABLE ==
meta_id | post_id | meta_key | meta_value
1       | 101     | quantity | 8
2       | 101     | price    | 100
3       | 102     | quantity | 7
4       | 102     | price    | 56
5       | 103     | quantity | 12
6       | 103     | price    | 256

POST TABLE ==
post_id | about
101     | Pencil    | Luxurious pencil only for you
102     | Eraser    | All your mistakes, gone!
103     | Pen       | Unrivaled penmanship, stronger than sword.
查询:

select 
    p.post_id, 
    p.name, 
    p.about, 
    m1.meta_value, 
    m2.meta_value 
from post_table p 
    inner join meta_table m1 
        on m1.post_id = p.post_id and m1.meta_key = 'quantity' 
    inner join meta_table m2 
        on m2.post_id = p.post_id and m2.meta_key = 'price' 
where CAST(m1.meta_value as int) < 10 
order by CAST(m1.meta_value as int) asc
选择
p、 邮政编码,
p、 名字,
p、 关于,,
m1.meta_值,
m2.meta_值
从post_表p
内部联接元表m1
在m1.post_id=p.post_id和m1.meta_key='quantity'
内部联接元表m2
在m2.post_id=p.post_id和m2.meta_key='price'
其中,强制转换(m1.meta_值为int)<10
按转换顺序(m1.meta_值为int)asc
感谢您

来自:

不同列的比较(将字符串列与 例如,时间或数字列)可能会阻止使用索引,如果 如果不进行转换,则无法直接比较值

在您的例子中,表达式
CAST(m1.meta_值为int)<10
可能不会使用任何可用于满足该谓词的索引,因为您没有在其定义的类型中引用meta_值

当使用列存储多种类型的数据(字符串、整数、日期等)时,会出现这些类型的问题。通常,为数据使用正确的数据类型可以使数据库按预期的方式工作,并使数据库做出可以实现最佳查询执行的假设

如果您想调整这个特定的查询,则考虑运行<代码>解释选择…<代码>并分析或张贴结果。

< P>从:

不同列的比较(将字符串列与 例如,时间或数字列)可能会阻止使用索引,如果 如果不进行转换,则无法直接比较值

在您的例子中,表达式
CAST(m1.meta_值为int)<10
可能不会使用任何可用于满足该谓词的索引,因为您没有在其定义的类型中引用meta_值

当使用列存储多种类型的数据(字符串、整数、日期等)时,会出现这些类型的问题。通常,为数据使用正确的数据类型可以使数据库按预期的方式工作,并使数据库做出可以实现最佳查询执行的假设


如果您想调整这个特定的查询,那么考虑运行<代码>解释选择…<代码>并分析或张贴结果。

索引将改进搜索结果,因为我使用同一列来表示几个值(数量、最大价格、最小价格、DEF价格等)。wordpress和woocommerce是如何工作的?过滤和分类产品将索引提高搜索结果,因为我对多个值(数量、最高价格、最低价格、定义价格等)使用同一列?wordpress和woocommerce是如何工作的?过滤和分类产品