我有一个包含几列的大表,其中一列是存储为UNSIGNED BIGINT
的MAC地址(主键)。
我想进行查询以获取MAC包含字符串部分的行。
这是我插入行(mysql)的方式:
INSERT INTO mybigtable (mac, col2, col3)
VALUES (conv('0123456778AB', 16, 10), 'myval1', 'myval2')
如何选择MAC列包含字符串'56'的行?这是我的解决方案:
SELECT * from mybigtable WHERE HEX(mac) LIKE '%56%'
我觉得这个查询性能很差,因为它必须将表的所有行转换为十六进制来比较字符串。
有更好的方法来进行此查询吗?我想有点但我不知道怎么做。我是否需要更改列的类型?我不喜欢将它存储为CHAR(12),因为它是PK并且涉及到一些FK。
提前致谢。