Unless your floor and ceiling contain a lot of triangles, it's probably not going to make much of a difference. But if you want to try it out, you don't need to create separate models for them. Simply specify the name of the floor/ceiling mesh when disabling collisions. Example:
Code:
room.disable(viz.COLLISION,'ceiling')
room.disable(viz.COLLISION,'floor')
Also, do these intersections tests need to be performed every frame? If not, you can offload the intersection tests onto a thread that performs them at a lower rate.