我使用php和Mysql数据库。 哪一种是从数据库中选择数据的更快方式
select * from product table WHERE category name = something
或
以及ID或NAME怎么样?是否有必要搜索ID,然后将其转换为NAME 哪种方式更好?
答案 0 :(得分:3)
除非有明显的性能原因,否则您应该坚持规范化的数据库设计。在您的特定情况下,重复类别名称可能会导致性能下降,因为您最终会得到一个更大的表,并且必须比较字符串而不是4或8字节整数。
答案 1 :(得分:1)
如果没有先做一些重要的测量,请不要担心“最快”。
不要担心最快,而要考虑哪种方式最清楚。
特别是在数据库中,请考虑哪种方法可以保护您免受数据错误的影响。
如果程序错误或给出错误的答案,那么程序的速度并不重要。
答案 2 :(得分:0)
理想情况下,您将为类别构建一个表,然后使用product表中该表的主键(id字段)作为category_id。然后,您仍然可以在category_id字段上进行搜索,但它更接近于规范化,您可以使用比尝试索引文本字段更好的性能结果索引整数字段。
答案 3 :(得分:0)
拥有一个列出名称的单独类别表会更快。您将类别ID放在产品表中,该类别对应于类别表中的相同类别ID。您不需要“在此表中搜索”。你只需使用连接:
SELECT product_table.*, category_table.CategoryName
FROM product_table
INNER JOIN category_table ON category_table.CategoryID = product_table.CategoryID
WHERE CategoryName = ?
如果您可以按CategoryID而不是CategoryName进行选择,那么它会更快,因为CategoryID将是您的主键。