MYSQL表字段type内容形如'1,2,3,4',何高速的从100万条记录中查询包含如'2或4'或其他 10
MYSQL表字段type内容形如'1,2,3,4',表中有超过100万条数据,如何写SQL查询语句,从表中快速找到type字段包含2或3或4等等,或其组合的记录。或者如何...
MYSQL表字段type内容形如'1,2,3,4',表中有超过100万条数据,如何写SQL查询语句,从表中快速找到type字段包含2或3或4等等,或其组合的记录。
或者 如何优化设计表结构,能达到在1S内查询出来的
type字段设置了索引。
下面的查询时间超过了20秒,如何优化?或者 如何优化设计表结构,能达到在1S内查询出来的。
SELECT * FROM article where find_in_set('1',type)>0 or find_in_set('2',type)>0 or find_in_set('4',type)>0 limit 20
使用正则表达式的方式也是一样的。 展开
或者 如何优化设计表结构,能达到在1S内查询出来的
type字段设置了索引。
下面的查询时间超过了20秒,如何优化?或者 如何优化设计表结构,能达到在1S内查询出来的。
SELECT * FROM article where find_in_set('1',type)>0 or find_in_set('2',type)>0 or find_in_set('4',type)>0 limit 20
使用正则表达式的方式也是一样的。 展开
1个回答
展开全部
参考一下 MYSQL 的枚举类型 和set 类型...
MySql中的ENUM是一个字符串对象,其值来自表创建时在列规定中显式枚举的一列值。
可以插入空字符串""和NULL:
如果你将一个非法值插入ENUM(也就是说,允许的值列之外的字符串),将插入空字符串以作为特殊错误值。该字符串与“普通”空字符串不同,该字符串有数值值0。
如果将ENUM列声明为允许NULL,NULL值则为该列的一个有效值,并且默认值为NULL。如果ENUM列被声明为NOT NULL,其默认值为允许的值列的第1个元素。
3.4、SET类型(1)
SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。指定包括多个SET成员的SET列值时各成员之间用逗号(‘,’)间隔开。例如,指定为SET('one', 'two') NOT NULL的列可以有下面的任何值:
''
'one'
'two'
'one,two'
SET最多可以设置64个值。创建表时,SET成员值的尾部空格将自动被删除。检索时,保存在SET列的值使用列定义中所使用的大小写来显示。
MySQL用数字保存SET值,所保存值的低阶位对应第1个SET成员。如果在数值上下文中检索一个SET值,检索的值的位设置对应组成列值的SET成员。
MySql中的ENUM是一个字符串对象,其值来自表创建时在列规定中显式枚举的一列值。
可以插入空字符串""和NULL:
如果你将一个非法值插入ENUM(也就是说,允许的值列之外的字符串),将插入空字符串以作为特殊错误值。该字符串与“普通”空字符串不同,该字符串有数值值0。
如果将ENUM列声明为允许NULL,NULL值则为该列的一个有效值,并且默认值为NULL。如果ENUM列被声明为NOT NULL,其默认值为允许的值列的第1个元素。
3.4、SET类型(1)
SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。指定包括多个SET成员的SET列值时各成员之间用逗号(‘,’)间隔开。例如,指定为SET('one', 'two') NOT NULL的列可以有下面的任何值:
''
'one'
'two'
'one,two'
SET最多可以设置64个值。创建表时,SET成员值的尾部空格将自动被删除。检索时,保存在SET列的值使用列定义中所使用的大小写来显示。
MySQL用数字保存SET值,所保存值的低阶位对应第1个SET成员。如果在数值上下文中检索一个SET值,检索的值的位设置对应组成列值的SET成员。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |