【发布时间】:2015-11-24 23:09:47
【问题描述】:
我正在创建一个表格然后显示记录,这让我很奇怪。
如果我存储,说“饮食习惯”有一个品牌(素食、非素食和蛋食),如果我将“饮食习惯”存储为 int 或 tinyint 或 varchar 或 enum 类型。
使用 int [方法 1]
也是如此// to select records
SELECT * FROM table WHERE eating_habits = 2 AND ...;
//for display in php
foreach($all_records AS $key => $val) {
if($val['eating_habits'] == 1)
echo 'Vegetarian';
elseif($val['eating_habits'] == 2)
echo 'Non-Vegetarian';
else
echo 'Eggetarian';
}
快/慢于 - 使用 tinyint [方法 2]
// script will same as above aproach 1
....
比使用 int 或 tinyint 快/慢 - join****[方法 3]
// to select records
SELECT *.t1 FROM table1 as t1 join table2 as t2 on ti.eat_habit_id=t2.eating_habits
WHERE t2.eating_habits = 2 AND ...;
//for display in php
foreach($all_records AS $key => $val) {
echo $val['eating_habits'];
}
比使用 varchar [方法 4]
更快/更慢// to select records
SELECT * FROM table WHERE eating_habits = 'Non-Vegetarian' AND ...;
//for display in php
foreach($all_records AS $key => $val) {
echo $val['eating_habits'];
}
比使用 enum [方法 5]
更快/更慢 // script will same as above approach 3
.....
从上述 5 种方法中,哪一种方法可以让我更快地在 php 页面中搜索、获取和显示记录?
【问题讨论】:
-
是什么阻止你对它进行基准测试?
-
我没找到你?你能详细说明一下吗?
-
始终在设计时考虑到规范化。在第一次设计迭代之后,模式必须尽可能标准化。仅在您证明您尝试做的事情值得优化之后进行优化。并解决您最初的问题:没关系。完全没有。
-
@amitgupta 我确定你还没有阅读我的评论。为什么首先需要优化它?
-
你问错问题了。除非您遇到特定的性能问题,否则您应该关注“如何让我的数据库设计易于理解、使用和维护”,而不是“哪些数据类型在这个微基准测试中运行得更快”。
标签: php mysql performance postgresql select